在iOS 13上更新后无法打开iCloud UIDocument

时间:2019-12-24 12:31:10

标签: ios swift icloud uidocument icloud-documents

我有一个简单的UIDocument子类,该子类具有重写的loadcontents函数。

在iOS 13上更新之前,json文档已保存在url“ / private / var / mobile / Library / Mobile Documents / iCloud〜appbundle / Documents / EFB7FCBA96684AC0B101E3CD829E6996.json

在当前的iOS版本13.2.2(更新后)中,此文档无法打开:

let cloudDocument: ICloudDocument = ICloudDocument(fileURL: url)
cloudDocument.open { (openSuccess) in
    if openSuccess {
        success()
    } else {
        // in my case openSuccess is false
        failure()
    }
}

调试信息。

在ICloudDocument中覆盖handleError

override func handleError(_ error: Error, userInteractionPermitted: Bool) {     
    print("userInteractionPermitted - \(userInteractionPermitted)")
    print(error)
}

在控制台中:

userInteractionPermitted - true
Error Domain=NSCocoaErrorDomain Code=256 "The file “EFB7FCBA96684AC0B101E3CD829E6996” couldn’t be opened." UserInfo={NSURL=file:///private/var/mobile/Library/Mobile%20Documents/iCloud~appbundle/Documents/EFB7FCBA96684AC0B101E3CD829E6996.json}

如果我在ICloudDocument中使用cloudDocument.read方法,那么它可以很好地从文件中接收数据,但是open会引发错误。

文档的文档状态cloudDocument.documentState关闭

文件选项:

> print(FileManager.default.isWritableFile(atPath: url.path))
true
> print(FileManager.default.isReadableFile(atPath: url.path))
true

URLResourceKeys:

URLResourceKey.ubiquitousItemIsUploadingKey - true
URLResourceKey.ubiquitousItemIsUploadedKey - false
URLResourceKey.ubiquitousItemUploadingErrorKey - nil
URLResourceKey.ubiquitousItemHasUnresolvedConflictsKey - false
URLResourceKey.isUbiquitousItemKey - true
URLResourceKey.ubiquitousItemDownloadingStatusKey - "NSURLUbiquitousItemDownloadingStatusCurrent"

我找到了一个有关此问题的链接,没有答案 https://forums.developer.apple.com/thread/126889

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

重启iOS解决了此问题。我认为更新到iOS 13并进行迁移后,系统需要重新加载。