在iOS 13上进行测试时,UIDocumentBrowserViewController
有一个非常奇怪的问题。importHandler(newDocumentURL, .move)
似乎无缘无故地崩溃了:
[DocumentManager] Cannot create urlWrapper for url file:///.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt.
error Error Domain=NSPOSIXErrorDomain Code=22 "couldn't issue sandbox extension com.apple.app-sandbox.read-write for '/.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt':
Invalid argument" UserInfo={NSDescription=couldn't issue sandbox extension com.apple.app-sandbox.read-write for '/.../tmp/23720D22-BC1D-4E7B-A7AE-A1C8B0293F9E.txt': Invalid argument}.
这是一个复制的两步过程:
在documentBrowser(_: , didRequestDocumentCreationWithHandler:)
let newDocumentURL: URL? =
URL(fileURLWithPath: NSTemporaryDirectory())
.appendingPathComponent(UUID().uuidString)
.appendingPathExtension("txt")
// Set the URL for the new document here. Optionally, you can present a template chooser before calling the importHandler.
// Make sure the importHandler is always called, even if the user cancels the creation request.
if newDocumentURL != nil {
print(newDocumentURL!)
try! "My file content".write(to: newDocumentURL!, atomically: true, encoding: .utf8)
importHandler(newDocumentURL, .move)
} else {
importHandler(nil, .none)
}
在iOS 13模拟器上启动它,创建一个新文档,并打印出错误,并且没有其他反应。
如果您在iOS 12上执行相同的代码,则可以完美运行,该文件将被移动并由应用程序打开。
问题发生在iOS 13 beta 7上,无论它是由Xcode 11 beta 7还是Xcode 10.3编译的
有什么主意吗?
编辑:当您在文档目录而不是临时目录中创建文件时,仍然会出现问题:
FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
编辑2 :Xcode 11 GM(11A419c)仍然存在问题
编辑3 :该问题仅在模拟器上仍然存在。在装有iOS 13 GM的设备上,UIDocumentBrowserViewController
可以正常工作。
编辑4 :在官方Xcode 11版本11A420a(又名GM Seed 2)上的模拟器上仍然存在问题
编辑5 :问题仅在Mojave上出现,并且在Catalina上似乎不存在
答案 0 :(得分:0)
我已经验证了该错误与Mac OS Mojave上运行的Xcode 11.1 GM存在。
在Catalina Beta 9上运行时,不会发生此问题。(FWIW我在Parallels虚拟机中运行了Catalina Beta 9,因为我不知道它是否足够稳定以升级到用于生产工作。)
寻找变通办法,如果我发现有任何变通办法,则会发布(但请注意,这不是我的专业领域,只是凭直觉就证明是正确的。)
您可能想更新您提交的Radar,以表明这可能是Mojave特有的。