Получение URL-пути изображения с устройства в iOS Swift - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь получить путь к изображению, используя PHImageManager на реальном устройстве, а не на симуляторе.Я использую photoUrl = info!["PHImageFileURLKey"] as? URL, чтобы получить URL.

Теперь, когда я запускаю свой код на симуляторе, я получил 9 key/value pairs в моей информации.Но когда я запускаю тот же код на реальном устройстве, я получаю только 3 key/value pairs, и поэтому я не получаю photoUrl, и мое приложение вылетает

Вот код, который я пытался реализовать,


var selectedPhotos : [URL] = []

 func pickerViewController(_ pickerViewController: TatsiPickerViewController, didPickAssets assets: [PHAsset])
    {

            self.selectedPhotos.removeAll()
            let imageManager = PHImageManager.default()
            let options = PHImageRequestOptions()
            options.deliveryMode = .highQualityFormat
            options.resizeMode = .exact
            options.isSynchronous = true

            let count = assets.count
            for asset : PHAsset in assets
            {
                let imageSize = CGSize(width: asset.pixelWidth,
                                       height: asset.pixelHeight)
                /* For faster performance, and maybe degraded image */
                imageManager.requestImage(for: asset,
                                          targetSize: imageSize,
                                          contentMode: .aspectFill,
                                          options: options,
                                          resultHandler:
                    {
                                            (image, info) -> Void in
                         var photoUrl : URL!
                         photoUrl = info!["PHImageFileURLKey"] as? URL
                         self.selectedPhotos.append(photoUrl)
                    })
            }
}

1 Ответ

0 голосов
/ 22 апреля 2019

Используйте asset.requestContentEditingInput вместо asset.requestImagebelow для извлечения изображения URL из PHAsset:

func pickerViewController(_ pickerViewController: TatsiPickerViewController, didPickAssets assets: [PHAsset]){

    let count = assets.count
    for asset : PHAsset in assets{            
        asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { (eidtingInput, info) in
            if let input = eidtingInput, let photoUrl = input.fullSizeImageURL {
                self.selectedPhotos.append(photoUrl)
            }
        }
    }
}
...