将 PHAsset 获取结果限制为 3 个资产

Jor*_*n H 1 ios photokit phasset phfetchoptions

我需要获取按拍摄日期排序的三张照片 - 最新是最近拍摄的。我目前这样做的方法是获取所有照片资产,然后以适当的索引(0、1、2)获取资产。虽然这有效,但我很好奇当我只对前三名感兴趣时是否有更有效的方法来做到这一点。文档解释了 fetch 不会返回所有图像数据 - 只有元数据,但我仍然不需要获取所有元数据。是否有PHFetchOptionI 可以用来限制 fetch 或NSPredicate,或者不必担心?

var assetsFetchResults = PHAsset.fetchAssetsWithMediaType(.Image, options: nil)
let imageManager = PHCachingImageManager()

if assetsFetchResults?.count > 0 {
    var asset = assetsFetchResults?[0] as? PHAsset
    imageManager.requestImageForAsset(asset, targetSize: targetSize, contentMode: .AspectFill, options: nil, resultHandler: ...)
}
//repeat for index 1 and 2 
Run Code Online (Sandbox Code Playgroud)

Mad*_*las 6

因此,在 iOS 9 中,您可以设置 PHFetchOptions 设置来限制您获取的数量。例如:

   let fetchOptions = PHFetchOptions()
    if #available(iOS 9.0, *) {
        fetchOptions.fetchLimit = 3
    } else {
        // Fallback on earlier versions
    }
Run Code Online (Sandbox Code Playgroud)

但是,我也在寻找一种在 iOS 8 设备上执行此操作的方法,因为此时我们仍然必须同时支持 iOS 8 和 9