arrays - 检查相匹配的 url

标签 arrays swift

我有一个用户从照片库中选择的图像的 url 数组。有没有一种快速的方法可以从照片库中获取这些 Assets (它们永远不会超过 5 张)而无需遍历所有用户的照片(在我的测试中这真的很慢)。

这是我现在使用的代码:

func loadCollectionView() {

    arrImageViews.removeAll()

    let options = PHFetchOptions()
    //options.predicate = NSPredicate(format: "favorite == YES")
    options.sortDescriptors = [
        NSSortDescriptor(key: "creationDate", ascending: true)
    ]

    let results = PHAsset.fetchAssets(with: .image, options: options)
    var assets: [PHAsset] = []
    results.enumerateObjects { (object, _, _) in
        if let asset = object as? PHAsset {
            assets.append(asset)
        }
    }

    let manager = PHImageManager.default()


    for thisAsset in assets {

        thisAsset.getPHAssetURL(completionHandler: {(assetURL) in
            if let strAssetURL = assetURL?.absoluteString {
                if self.arrImagePaths.contains(strAssetURL) {

                    manager.requestImage(for: thisAsset, targetSize: CGSize(width: 80.0, height: 80.0), contentMode: .aspectFit, options: nil, resultHandler: {(thisImage, _) in
                        self.arrImageViews.append(UIImageView(image: thisImage))
                        self.cImages.reloadData()
                    })

                }
            }

        })

    }



}

getPHAssetURL 是一个从 Assets 中提取 url 的扩展。

所以我正在寻找的是 assetURL?.absoluteString 和我的数组中的字符串之间的匹配项。

最佳答案

检查了 docs ,我想如果你只想获取单个选定的 PHAsset 的信息,你可以试试这个:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    guard let asset = info[UIImagePickerControllerPHAsset] as? PHAsset else { return }
    let localId = asset.localIdentifier
    //Save this variable in your model.
}

如果您在 Collection View 中实现了多张照片选择,则必须查看他们的文档以了解如何获取所选媒体的 PHAssets。但这应该很容易。

然后用你的 var localIds: [String] 你可以试试这个:

let options = PHFetchOptions()
options.sortDescriptors = [
    NSSortDescriptor(key: "creationDate", ascending: true)
]
let results = PHAsset.fetchAssets(withLocalIdentifiers: localIds, options: options)

请注意,您可以根据关键字 here 在提取请求中使用谓词执行进一步过滤.

关于arrays - 检查相匹配的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414216/

相关文章:

ios - 已加载 Root View 的 AppDelegate 回调

ios - 我如何将带有对象数组的 json 字符串转换为带有 nsdictionaries 的 nsarray - IOS

Java方法组合数组列表: variable number of arguments

ios - Swift:无法从 GroupOperation 类覆盖 operationDidFinish

ios - 如何在 Swift 中编辑动态 UITableViewCell 中的 View ?

ios - 当用手指单击或悬停时,向 UIButton 添加颜色 react

ios - 更改 View Controller 维护导航层次结构

javascript - 为什么我的循环变成了无限循环?

php - 为什么 print_r 仍然打印出一个 Json 对象?

java - java中的程序,逐行读取数据并以表格形式显示数据以及行总计、列总计和总计