PHAsset Null 但本地标识符有效

Posted

技术标签:

【中文标题】PHAsset Null 但本地标识符有效【英文标题】:PHAsset Null but local identifier is valid 【发布时间】:2019-07-19 13:31:43 【问题描述】:

我正在尝试从本地标识符加载资产。本地标识符似乎是正确的,但资产为空,我不知道为什么。我的应用程序的另一部分有类似的代码,可以正常工作。

Queue *queue = [NSEntityDescription insertNewObjectForEntityForName:@"Queue" inManagedObjectContext:self.context];

for (int reyrt = 0; reyrt < self.storeGIF.count; reyrt++) 
    queue.queuetextimagePath = [self.storeGIF objectAtIndex:reyrt];




__block float fileSize;
NSArray *identifiers = @[queue.queuetextimagePath];
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:identifiers options:nil];
PHAsset *asset  = [assetsFetchResult firstObject];

NSLog (@"identifiers: %@", identifiers);
NSLog (@"assetsFetchResult: %@", assetsFetchResult);
NSLog (@"asset: %@", asset);
    if (!asset) 
        NSLog(@"can't retrieve PHAsset from localIdentifier:%@",identifiers);
    

这是使用上述代码时的 NSLog 文件结果。

019-07-19 09:26:36.366739-0400 myApp[1440:328144] identifiers: (
"857AC3DA-C047-4D88-911B-C5FE227E2B96/L0/001"
)

2019-07-19 09:26:36.366945-0400 myApp[1440:328144] assetsFetchResult PHFetchResult: 0x281129900 count=0

2019-07-19 09:26:36.366982-0400 myApp[1440:328144] asset: (null)

2019-07-19 09:26:36.367061-0400 myApp[1440:328144] can't retrieve PHAsset from localIdentifier:(
"857AC3DA-C047-4D88-911B-C5FE227E2B96/L0/001"
)

【问题讨论】:

【参考方案1】:

问题是您应该在请求对象之前删除/L0/001 部分。我不明白为什么 uuid 字符串包含这些后缀,但如果你放弃它并只使用普通的 UUID 部分,它就可以工作。

【讨论】:

以上是关于PHAsset Null 但本地标识符有效的主要内容,如果未能解决你的问题,请参考以下文章

按顺序获取 PHAsset

带有 PHAsset 的 SDWebImage

iOS 8、PhotoKit、PHAsset、唯一标识符

如何正确使用带有本地标识符的获取资产?

快速检测从照片库中删除的图像

无法加载从包中带有标识符“(null)”的笔尖引用的图像