ios – ALAssetsLibrary似乎返回错误的照片数量

ios – ALAssetsLibrary似乎返回错误的照片数量,第1张

概述当我使用ALAssetsLibrary获取本地照片时,它工作正常.但在我使用“照片”应用程序删除一些照片后,我的应用程序崩溃了. 崩溃信息是: “由于未捕获的异常’NSRangeException’终止应用程序,原因:’*** – [NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]:索引14超出边界[0 .. 9]’”.’14’ 当我使用ALAssetsLibrary获取本地照片时,它工作正常.但在我使用“照片”应用程序删除一些照片后,我的应用程序崩溃了.

崩溃信息是:

“由于未捕获的异常’NSRangeException’终止应用程序,原因:’*** – [NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]:索引14超出边界[0 .. 9]’”.’14’

看起来本地照片的数量仍然与befoore相同.即使在我退出应用程序并重新启动它之后,它仍然会崩溃.

本地照片访问代码:

dispatch_async(dispatch_get_main_queue(),^{   @autoreleasepool    {       ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)       {           NSLog(@"error occour =%@",[myerror localizedDescription]);       };       ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result,NSUInteger index,BOol *stop)       {           if (result!=NulL)            {               if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])                {                   [self.g_imageArray addobject:result];               }           }       };       ALAssetsLibraryGroupsEnumerationResultsBlock       libraryGroupsEnumeration = ^(ALAssetsGrouP* group,BOol* stop)       {           if (group == nil)            {               return;           }           if (group!=nil) {               [group enumerateAssetsUsingBlock:groupEnumerAtion];           }       [self updatephotoList];       };       self.library = [[ALAssetsLibrary alloc] init];       [self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos                              usingBlock:libraryGroupsEnumeration                             failureBlock:failureblock];   }});

如果我用系统相机拍摄另一张照片,我的应用程序再次正常.

解决方法 这似乎是一个iOS错误,就像你说ALAssetsLibrary返回错误的照片数量,所以你得到索引越界错误.解决方法是再次重新加载您的照片,如下所示:

ALAssetsLibraryGroupsEnumerationResultsBlocklibraryGroupsEnumeration = ^(ALAssetsGrouP* group,BOol* stop){       if (group == nil)        {           return;       }       //Force to reload photo as numberOfAssets is broken       NSLog(@"how many picture I have in this group: %d",[group numberOfAssets]);       [group setAssetsFilter:[ALAssetsFilter allPhotos]];//this will cause group to reload       NSLog(@"how many picture I have in this group: %d",[group numberOfAssets]);       if (group!=nil) {           [group enumerateAssetsUsingBlock:groupEnumerAtion];       }   [self updatephotoList]; };
总结

以上是内存溢出为你收集整理的ios – ALAssetsLibrary似乎返回错误的照片数量全部内容,希望文章能够帮你解决ios – ALAssetsLibrary似乎返回错误的照片数量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存