iCloudドキュメントストレージを使用した非常にシンプルなIOSアプリがあります。すべてが機能していましたが、ある時点で、少なくとも 1 つの iCloud ドキュメントのドキュメント ロード メソッドで EXC_BAD_ACCESS エラーが発生し始めましたが、ほとんどのファイルは問題なくロードされます。
- (BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
file = (NSFileWrapper*) contents;
NSFileWrapper *infoFile = [[file fileWrappers] objectForKey:InfoFile];
NSData *infoData = [infoFile regularFileContents];
if(nil != infoData) {
NSPropertyListFormat format = NSPropertyListBinaryFormat_v1_0;
NSError *propertyListError;
// EXC_BAD_ACCESS occurs here
NSDictionary *dictionary = [NSPropertyListSerialization propertyListWithData:infoData options:NSPropertyListImmutable format:&format error:&propertyListError];
if(nil == propertyListError) {
_name = [dictionary objectForKey:@"name"];
_date = [dictionary objectForKey:@"date"];
_index = [dictionary objectForKey:@"index"];
_paperSize = [GritzPaperSizeEnum enumWithType:[dictionary objectForKey:@"paperSize"]];
TFLog(@"loading doc %@", _name);
_pages = [[NSMutableArray alloc] init];
for (NSString *key in file.fileWrappers) {
NSFileWrapper *subDir = [[file fileWrappers] objectForKey:key];
if(subDir.isDirectory) {
GritzPage *page = [[GritzPage alloc] initFromFile:subDir];
[_pages addObject:page];
}
}
_currentPage = [_pages objectAtIndex:0];
return YES;
}
}
return NO;
}
不良データを「キャッチ」して処理し、破損したファイルを無視できると期待しています。しかし、私は方法を理解できないようです。EXC_BAD_ACCESS エラーにより、アプリがクラッシュします。
データまたはファイルが失敗してスキップ (または削除) することを事前に判断するには、どうすればよいでしょうか。