Bu gibi bir şey yapın. PHFetchResult
için uzantıyı doğrudan ekleyemezsiniz, çünkü başka bir ObjectType öğesi, jenerik parametresi PHFetchResult<ObjectType>
'dur. Yani başka bir şey yapmalısın.
class FetchPhoto {
class func assetCollection() -> [PHAssetCollection] {
var list :[PHAssetCollection] = []
PHAssetCollection.fetchMoments(with: nil).enumerateObjects(EnumerationOptions.concurrent) { (collection, _, _) in
list.append(collection)
}
return list
}
}
PHAssetCollection.fetchMoments
döner burada PHAssetCollection
PHFetchResult<PHAssetCollection>
PHFetchResult
için ObjectType
olduğunu. ObjectType'ı belirtmediğiniz için belirsiz hatayı aldınız.
Buna yaklaşmanın genel bir yolu.
class FetchPhoto {
class func assetCollection<T : PHObject>(result : PHFetchResult<T>) -> [T] {
var list : [T] = []
result.enumerateObjects(EnumerationOptions.concurrent) { (object, _, _) in
list.append(object)
}
return list
}
}
Swift 3
class PhotosHelper {
class func fetchAllLocalIdentifiersOfPhotos(completion : (_ localIdentifiers : [String]) ->()) {
let photos : PHFetchResult<PHAsset> = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
photos.enumerateObjects ({ _,_,_ in
// Do your operations, you can see that there is no warnings/errors in this one
})
}
}
eğlenceli – six
izi için (EnumerationOptions.concurrent) ekleyin neden bu işe alınamıyor. Numaralandırma seçenekleri eklemeye çalıştığımda "Bağımsız etiketler" (_:, _ :) herhangi bir aşırı yüklenmeyle eşleşmiyor) alıyorum ama seçenekleri kaldırdığımda hala belirsiz kullanım olarak gösteriliyor .. –