我正在使用PHPhotoLibrary
在iPhone中爲我的應用程序相冊保存和獲取圖像。在PHPhotoLibrary中,photoLibraryDidChange不會通知所有更新
當我的相冊有很多圖像(約5000張靜止圖像)時,我的應用程序從網絡下載10張圖像,然後保存到相機膠捲並添加到我的應用程序相冊中。
與此同時,應用程序觀察到photoLibraryDidChange
回調知道添加的圖像,但它通知只有5插入圖像。
我通過按HOME按鈕完成我的應用程序,並檢查照片應用程序中的相機膠捲和我的相冊。 有正確的5010圖像。
也許photoLibraryDidChagne
不通知所有更改?
我的代碼如下所示。
- (void)photoLibraryDidChange:(PHChange *)changeInstance
{
// dispatch main queue
dispatch_async(dispatch_get_main_queue(), ^{
[self handleChangedLibrary:changeInstance];
});
}
- (void)handleChangedLibrary:(PHChange *)changeInstance
{
PHFetchResultChangeDetails *fetchResultChangeDetails = [changeInstance changeDetailsForFetchResult:_assetsFetchResult];
if (!fetchResultChangeDetails) {
NSLog(@"### No change in fetchResultChangeDetails ###");
return;
}
if (![fetchResultChangeDetails hasIncrementalChanges]) {
[self fetchAllAssets];
return;
}
NSArray *insertedObjects = [fetchResultChangeDetails insertedObjects];
if (insertedObjects) {
for (PHAsset *asset in insertedObjects) {
if (asset.mediaType == PHAssetMediaTypeImage) {
NSLog(@"asset=%@", asset);
[_stillImageAssetArray addObject:asset];
}
}
}
self.assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:_assetCollection options:nil];
}
我檢查插入的資產NSLog和調試器,它真正更新5個圖像。
其他5張圖像沒有通知。