Swift 3获取照片图像的PHImageFileURLKey

时间:2017-11-03 21:29:55

标签: arrays swift completionhandler

我有一个照片选择器,它为我提供了PHAsset,我需要获取每张照片的本地网址。到目前为止,我可以使用以下代码执行此操作:

var selectedPhotos =  [NSURL]()
    selectedPhotos.removeAll()
    let options = PHImageRequestOptions()
    options.version = .original
    options.deliveryMode = .highQualityFormat
    options.isNetworkAccessAllowed = true
    let imgManager = PHImageManager.default()
    for index in 0..<savedAssets.count
    {
    let asset = savedAssets[index] as PHAsset
    imgManager.requestImage(
        for: asset,
        targetSize: CGSize(width : 1024, height : 768),
        contentMode: .aspectFill,
        options: options,
        resultHandler: { (image, info) in
            let photoUrl = info!["PHImageFileURLKey"] as! NSURL
selectedPhotos.append(photoUrl)

print("this is the correct Url", photoUrl, "this is an array of URLs", selectedPhotos)

    }

        )
    }

正如我发现你无法访问var“photoUrl”或者resultHandler之外的数组。我需要在程序的其他部分使用这些URL。如何在我的应用程序的其他部分使用此数组?有一个更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我正在考虑这个错误的方式。如果我想在结果处理程序中使用变量photoUrl,我可以将它传递给函数。

resultHandler: { (image, info) in
        let photoUrl = info!["PHImageFileURLKey"] as! NSURL
        saveUrlToArray(photo: photoUrl)
})

然后在其他地方创建一个接受NSURL的函数。