gpt4 book ai didi

ios - ALAssetsLibrary assetForURL : always returning nil for photos in "My Photo Stream" in iOS 8. 1

转载 作者:IT王子 更新时间:2023-10-29 07:55:40 25 4
gpt4 key购买 nike

此代码在 iOS 7 中运行良好,但在 iOS 8.1 中,位于“我的照片流”相册中的所有 Assets 在结果 block 中都为零。 (不调用 failureBlock。)普通相册和共享相册工作正常。

我尝试了接受的答案:Error trying to assigning __block ALAsset from inside assetForURL:resultBlock:

也就是说,我持有对 ALAssetsLibrary 对象的引用,监听 ALAssetsLibraryChangedNotification 事件(顺便说一句,这不会发生,但是哦,好吧。)我确保我的应用程序有权访问照片,我在 wi-fi 上,我在我的 tableView 中看到照片的缩略图就好了。就在我尝试用 assetForURL: 加载它们时,它们总是 nil。

// example URL: assets-library://asset/asset.JPG?id=1ECB69B9-DC7A-45A7-B135-F43317D3412C&ext=JPG
[self.library assetForURL:[NSURL URLWithString:url] resultBlock:^(ALAsset *asset) {
NSLog(@"Asset: %@", asset); // nil :(
} failureBlock:^(NSError *error) {
NSLog(@"Failure, wahhh!");
}];

还有其他人看到这个问题吗?

最佳答案

我遇到了同样的问题。切换到照片框架目前对我来说不是一个选择,但幸运的是我找到了一个解决方法。你可能会觉得它很丑,而且我怀疑当 Photo Stream 包含大量照片时它可能会运行缓慢,但总比没有好。

想法是枚举照片流 Assets 组中的所有项目,并将必要的 URL 与每个项目的 URL 进行比较。幸运的是,它仍然有效。

我有一个这样的方法(库是同一个类的 ALAssetsLibrary 属性,您可能需要在这段代码中初始化它):

- (void)loadItem:(NSURL *)url withSuccessBlock:(void (^)(void))successBlock andFailureBlock:(void (^)(void))failureBlock {

[library assetForURL:url
resultBlock:^(ALAsset *asset)
{
if (asset){
//////////////////////////////////////////////////////
// SUCCESS POINT #1 - asset is what we are looking for
//////////////////////////////////////////////////////
successBlock();
}
else {
// On iOS 8.1 [library assetForUrl] Photo Streams always returns nil. Try to obtain it in an alternative way

[library enumerateGroupsWithTypes:ALAssetsGroupPhotoStream
usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if([result.defaultRepresentation.url isEqual:url])
{
///////////////////////////////////////////////////////
// SUCCESS POINT #2 - result is what we are looking for
///////////////////////////////////////////////////////
successBlock();
*stop = YES;
}
}];
}

failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset from photo stream - %@", [error localizedDescription]);
failureBlock();

}];
}

}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset - %@", [error localizedDescription]);
failureBlock();
}
];
}

希望这对您有所帮助。

关于ios - ALAssetsLibrary assetForURL : always returning nil for photos in "My Photo Stream" in iOS 8. 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com