2015-05-02 22 views
1

我需要獲取按照拍攝日期排序的三張照片 - 最近一次是最近拍攝的。我目前這樣做的方式是獲取所有照片資產,然後在適當的索引(0,1,2)處獲取資產。雖然這是有效的,但當我只對前三名感興趣時,我很好奇是否有更高效的方式來做到這一點。該文檔解釋了獲取並不會返回所有圖像數據 - 只有元數據,但我仍然不需要獲取所有的元數據。有沒有PHFetchOption我可以用來限制抓取,或NSPredicate,或者是沒有必要擔心?將PHAsset獲取結果限制爲只有3個資產

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 
+1

你可以用'fetchKeyAssetsInAssetCollection同時支持iOS的8,9:選擇: '獲取一些關鍵照片而不是'fetchAssetsInAssetCollection:options:options:' – k06a

+0

這對於應用程序特定的用戶庫不起作用。 – jarora

+0

@jarora它在iOS 8.4.1中適用於由第三方應用程序創建的相冊 – Joey

回答

3

所以在iOS 9中,您可以設置PHFetchOptions設置來限制您獲取的數量。例如:

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

但我也正在尋找一種方式來做到這一點在iOS 8的設備,因爲我們仍然有在這一點上