Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios PHAsset assetResourcesForAsset在调用太频繁时失败_Ios_Objective C_Iphone_Phasset - Fatal编程技术网

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);
}