iOS 13 更新后 iCloud UIDocument 打开失败
iCloud UIDocument opening fails after update on iOS 13
我有一个简单的 UIDocument 子类,它覆盖了 load
和 contents
函数。
在 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"
我找到一个 link 关于这个问题没有答案
https://forums.developer.apple.com/thread/126889
有什么想法吗?
重新启动iOS解决了这个问题。我认为更新到 iOS 13 并迁移后,系统需要额外重新加载。
我有一个简单的 UIDocument 子类,它覆盖了 load
和 contents
函数。
在 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"
我找到一个 link 关于这个问题没有答案 https://forums.developer.apple.com/thread/126889
有什么想法吗?
重新启动iOS解决了这个问题。我认为更新到 iOS 13 并迁移后,系统需要额外重新加载。