我在我的應用程序中使用iCloud加載文本文件。當加載文本文件,這種方法是通過iCloud的稱爲當我打電話_UIDocument openWithCompletionHandler:^(BOOL success)
等:iCloud的loadFromContents - 如何處理UIDocumentStateSavingError和UIDocumentStateEditingDisabled
-(BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError {
NSLog(@"Library loadFromContents: state = %d", self.documentState);
if (!_books) {
_books = [[NSMutableArray alloc] init];
}
//if (self.documentState > 7) {
// NSLog(@"document is either savingError (4), EditingDisabled (8) or both (12)... will not load");
// return NO;
//}
self.books = [NSKeyedUnarchiver unarchiveObjectWithData:contents];
if ([_delegate respondsToSelector:@selector(libraryDocumentUpdated:)]) {
[_delegate libraryDocumentUpdated:self];
}
return YES;
}
現在最大的問題是,當documentState是8(UIDocumentStateEditingDisabled)或12(UIDocumentStateSavingError & UIDocumentStateEditingDisabled)。這通常會導致應用程序崩潰。如果documentState> 7,我試圖返回NO,即如果它是8或12,但是這導致根本不加載任何內容。
我想問題是UIDocument不會將任何東西加載到self.books中,如果它的編輯被禁用或存在保存錯誤。
什麼將是一個很好的做法來處理這種錯誤?另外,爲什麼Apple沒有在他們的示例代碼中建議在將數據加載到UIDocument(iCloud Docs)之前檢查documentState?我想我正在做一些根本性錯誤的事情。