ALAssetsLibrary wydaje się zwracać błędną liczbę moich zdjęć

Kiedy używam ALAssetsLibrary do pobierania lokalnych zdjęć, działa dobrze. Ale po usunięciu niektórych zdjęć za pomocą aplikacji „Zdjęcia” moja aplikacja ulega awarii.

Informacje o awarii to:

"Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 14 beyond bounds [0 .. 9]'".'14'

Wygląda na to, że liczba lokalnych zdjęć nadal pozostaje taka sama jak w przypadku befoore. A nawet po zamknięciu aplikacji i jej ponownym uruchomieniu nadal ulega awarii.

Lokalny kod dostępu do zdjęć:

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];
   }
});

Jeśli zrobię kolejne zdjęcie za pomocą aparatu systemowego, moja aplikacja znowu będzie OK.

questionAnswers(7)

yourAnswerToTheQuestion