Khi tôi sử dụng ALAssetsLibrary để tải ảnh cục bộ, nó hoạt động tốt. Nhưng sau khi tôi xóa một số ảnh bằng ứng dụng 'Ảnh', ứng dụng của tôi gặp sự cố.ALAssetsLibrary dường như trả lại số lượng sai ảnh của tôi
thông tin về lỗi là:
"Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 14 beyond bounds [0 .. 9]'".'14'
Dường như số lượng ảnh trong nước vẫn giữ nguyên như befoore. Và ngay cả sau khi tôi thoát khỏi ứng dụng và khởi động lại nó, nó vẫn bị treo.
mã truy cập hình ảnh địa phương:
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];
}
});
Nếu tôi lấy một bức ảnh với máy ảnh hệ thống, ứng dụng của tôi không OK lần nữa.
Một câu hỏi: bạn có chắc rằng '[tự updatephotoList]' sẽ được gọi _after_ khối liệt kê cuối cùng của '[nhóm enumerateAssetsUsingBlock ... ]? Tôi có hàng tá sự cố trong ứng dụng của mình nên tôi sẽ kiểm tra cách tiếp cận này và xem cách thức hoạt động: http://stackoverflow.com/a/23378441/649379 – SoftDesigner