gpt4 book ai didi

iphone - iCloud 的 loadFromContents - 如何处理 UIDocumentStateSavingError 和 UIDocumentStateEditingDisabled

转载 作者:太空狗 更新时间:2023-10-30 03:52:49 26 4
gpt4 key购买 nike

我在我的应用程序中使用 iCloud 来加载文本文件。加载文本文件时,当我调用 _UIDocument openWithCompletionHandler:^(BOOL success) 等时,iCloud 会调用此方法:

    -(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,即如果它是 8 或 12,我试图返回 NO,但这会导致根本不加载任何内容。

我想问题是如果 UIDocument 编辑被禁用或存在保存错误,它不会将任何内容加载到 self.books 中。

处理此类错误的最佳做法是什么?另外,为什么 Apple 在他们的示例代码中不建议在将数据加载到 UIDocument ( iCloud Docs ) 之前检查 documentState?我想我做的事情从根本上是错误的。

最佳答案

您是否实现了冲突管理?

在这些情况下你应该尝试一些事情然后重试加载文件第一个是检查是否

[NSFileVersion unresolvedConflictVersionsOfItemAtURL:]

有任何冲突,解决它们,重试打开文件,

[NSFileManager evictUbiquitousItemAtURL:]

[NSFileManager startDownloadingUbiquitousItemAtURL:]

如果还是打不开,请下载后再试。

关于iphone - iCloud 的 loadFromContents - 如何处理 UIDocumentStateSavingError 和 UIDocumentStateEditingDisabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com