जब मैं ALAssetsLibrary का उपयोग स्थानीय लोगों के लिए बनाए यह ठीक काम करता है की गलत संख्या वापस जाने के लिए लगता है। लेकिन जब मैं 'फोटो' एप्लिकेशन के साथ कुछ तस्वीरें हटा देता हूं तो मेरा ऐप दुर्घटनाग्रस्त हो जाता है।ALAssetsLibrary मेरी तस्वीर
क्रैश जानकारी है:
"Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 14 beyond bounds [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];
}
});
अगर मैं प्रणाली कैमरा के साथ एक और तस्वीर ले, अपने आवेदन पुनः ठीक करता है।
एक सवाल: क्या आप यह सुनिश्चित करें कि '[आत्म updatephotoList]' '[समूह enumerateAssetsUsingBlock के अंतिम गणना ब्लॉक _after_ कॉल कर लिया जाएगा ... ] '? मेरे ऐप में दर्जनों दुर्घटनाएं हैं इसलिए मैं इस दृष्टिकोण की जांच करूंगा और देख सकता हूं कि यह कैसे काम करता है: http://stackoverflow.com/a/23378441/649379 – SoftDesigner