이메일을 통해 PHAsset 이미지를 보내려고합니다. 우선 샌드 박스 앱을 사용하는 기본 사례를 얻으려고합니다. 그런 다음 결국 PHAssets 배열을 반복합니다. 아래는 내 샌드 박스 코드이며, 몇 가지 질문/문제가 있습니다. (이 코드 스 니펫 중 일부는 this SO post에서 가져온 것입니다.) 그리고 이것은 this list on another SO post에서 가장 Swift-4/PHAsset 최신 버전 인 것으로 보인 TLPHAssets이라는 다중 자산 선택 도구를 구현하려는 노력의 일부입니다. 모두 실행하는Swift 3 PHAs 세트를 이메일로 보내십시오.
내가 문제 코드의 resultHandler 블록을 얻는 데 :
func dismissPhotoPicker(withTLPHAssets: [TLPHAsset]) { // use selected order, fullresolution image self.selectedAssets = withTLPHAssets let mail = MFMailComposeViewController() mail.mailComposeDelegate = self; mail.setToRecipients(["emailaddress.com"]) // Put the rest of the email together and present the draft to the user mail.setSubject("Subject") let options = PHImageRequestOptions() options.isNetworkAccessAllowed = true options.version = .current options.deliveryMode = .opportunistic options.resizeMode = .fast let asset : PHAsset = self.selectedAssets[0].phAsset! as PHAsset PHImageManager.default().requestImage(for: asset, targetSize: CGSize(width : 400, height : 400), contentMode: .aspectFit, options: options, resultHandler: {(result: UIImage!, info) in if let image = result { let imageData: NSData = UIImageJPEGRepresentation(image, 1.0)! as NSData mail.addAttachmentData(imageData as Data, mimeType: "image/jpg", fileName: "BeforePhoto.jpg") } })
두 가지 질문 (I 기본 뭔가를 누락하면 나는 사과 있도록 스위프트에 아주 새로운 해요) . targetSize를 PHImageManagerMaximumSize로 설정했지만 다른 포스트의 권장 사항에서 400x400으로 변경했습니다. (그런데 카메라 롤에서 이미지를 선택하고 PHAsset의 mediaType이 ' 이미지 '로 표시되지만 라이브 사진이나 비디오 작업은하지 않습니다. 그 다음 단계로 넘어가겠습니다. 적절한 애셋 요청 처리기를 호출하기 위해 switch 문을 추가합니다. PHImageManagerMaximumSize가 작동하지 않는 이유는 무엇입니까? 그리고 시뮬레이터에서 응용 프로그램을 실행하고 다섯 개의 캔틴 이미지 중 하나를 선택하면 코드의 resultHandler 블록 (및 모든 mediaType 'image')이 표시되지 않습니다. 내 요청에 무슨 문제가 있을지 모르겠다. 결과를 방해하고있는 이미지 호출 .Handler는 호출되지 않습니까?
결국 내 카메라 롤에서 이미지를 가져 와서 targetSize와 함께 400x400에서 resultHandler 코드를 호출하게했습니다. 하지만 이제 resultHandler 내에서 샌드 박스 응용 프로그램이 "2017-10-26 15 : 35 : 26.604997-0700 MultiAssetPicker [15766 : 4904592]와 함께"let imageData : NSData ... "행에 충돌합니다. 예기치 않게 nil이 예기치 않게 발견되었습니다. 선택적 값의 래핑 해제 ".
무엇보다도 모든 도움을 주셨습니다.