崩溃信息是:
“由于未捕获的异常’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似乎返回错误的照片数量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)