Ios PHAsset assetResourcesForAsset在调用太频繁时失败
我需要检索相机卷中存在的所有Ios PHAsset assetResourcesForAsset在调用太频繁时失败,ios,objective-c,iphone,phasset,Ios,Objective C,Iphone,Phasset,我需要检索相机卷中存在的所有相位集的名称,单独或在短时间内检索。 要获取文件名,我使用与PHAsset关联的PHAssetResource的originalFilename属性。 这对于第一个资产来说效果很好,但在某个时刻(大约400个资产之后),它开始失败并每次返回nil。 下面是显示此行为的代码(在iPhone 7上运行,相机卷中有约800张照片): PHFetchResult*result=[PHAssetCollection fetchAssetCollectionsWithType:P
相位集
的名称,单独或在短时间内检索。
要获取文件名,我使用与PHAsset
关联的PHAssetResource
的originalFilename
属性。
这对于第一个资产来说效果很好,但在某个时刻(大约400个资产之后),它开始失败并每次返回nil
。
下面是显示此行为的代码(在iPhone 7上运行,相机卷中有约800张照片):
PHFetchResult*result=[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
子类型:PHAssetCollectionSubtypeSmartAlbumUserLibrary选项:nil];
PhaseSetCollection*assetCollection=result.firstObject;
PHFetchResult*AssetFetchResult=[PHAsset fetchAssetsInAssetCollection:assetCollection选项:nil];
对于(int i=索引;i 0)?[(PHAssetResource*)resources.firstObject originalFilename]:nil;
NSLog(@“%i:%@”,i,name);
}
当使用未记录的方法获取文件名时,例如[asset valueForKey@“filename”]
或PHImageManager
返回的info
字典的PHImageFileURLKey
键,一切正常(虽然该名称与原始文件名不同,而且由于没有文档记录,因此不可靠)
为什么官方的方法如此不可靠?
我做错了什么吗?使用PHImageManager从中获取UIImage对象PHAsset@KrishnaDattShukla我需要文件名,如何从UIImage获取它?(除了使用未记录的PHImageFileURLKey)通过使用我刚才在答案中添加的代码,您可以从PHAsset中获取所有信息。@KrishnaDattShukla在这里没有找到您的答案,请您指出!?您是指您的评论吗!?看到了吗-
PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
PHAssetCollection *assetCollection = result.firstObject;
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
for (int i = index; i<[assets count]; i++) {
PHAsset *asset = assets[i];
NSArray *resources = [PHAssetResource assetResourcesForAsset:asset];
NSString *name = (resources.count > 0) ? [(PHAssetResource*)resources.firstObject originalFilename] : nil;
NSLog(@"%i: %@", i, name);
}