Ios UIDocumentStateSavingError存在后如何打开UIDocument?
在我基于iCloud的应用程序中,我注意到,如果在UIDocument打开(且尚未关闭)时发生崩溃,文档的状态有时会变成Ios UIDocumentStateSavingError存在后如何打开UIDocument?,ios,objective-c,icloud,uidocument,nsmetadataquery,Ios,Objective C,Icloud,Uidocument,Nsmetadataquery,在我基于iCloud的应用程序中,我注意到,如果在UIDocument打开(且尚未关闭)时发生崩溃,文档的状态有时会变成UIDocumentStateSavingError,并且再也无法成功打开 在此之后运行[UIDocument openWithCompletionHandler::时,文档永远不会打开,返回NO表示success,返回5(uidocumentstatesclosed和UIDocumentStateSavingError)表示documentState 在iOS 5上,我还观察
UIDocumentStateSavingError
,并且再也无法成功打开
在此之后运行[UIDocument openWithCompletionHandler::
时,文档永远不会打开,返回NO
表示success
,返回5(uidocumentstatesclosed
和UIDocumentStateSavingError
)表示documentState
在iOS 5上,我还观察到,nsMetadataQueryIDUpdateNotification
不断被调用(每秒),直到文件被删除并重新启动应用程序。这会导致应用程序中出现其他可用性问题
还有一件事,在developer.icloud.com上,我注意到该文件显示了第二个存在冲突的版本。但是,在我的任何设备上都找不到此冲突,即使重新启动或重新安装应用程序也是如此
如何使UIDocument正常打开?
以下是我迄今为止所做的尝试:
- 检查
是否存在冲突,并使用[NSFileVersion UnsolvedConflictVersionsofItemnature::
删除所有旧版本[NSFileVersionRemoveOtherVersionsofItemnature:
- 在调用
将文件重新下载到设备之前,先调用[UIDocument openWithCompletionHandler:]
[[NSFileManager defaultManager]executeUbiquitousItemAttribute:
- 从developer.icloud.com下载主版本和冲突版本,查看其中是否有损坏或部分文件。都开得很好
- 我的头撞在桌子上。初步结果不成功
executeUbiquitousItemAttribute:
都返回YES
并且不会为我生成错误。您是在使用元查询获取文档名称吗?有时,当保存失败时,它会留下一个部分文件,这是查询返回的文件之一。如果它是一个部分文件,executeubiquitousitemature:
会不会丢弃它并重新下载呢?我认为不会。当我遇到类似的问题时,我用我在这里发布的答案解决了它: