NSOpenPanel/NSSavePanel 崩溃 Swift 3
NSOpenPanel/NSSavePanel crashes in Swift 3
在 Swift 3/Xcode8.1/10.12.2 我正在尝试使用 NSOpenPanel 获取包含以下代码的文本文件,由 DenBeke
编写
@IBAction func browseFile(sender: AnyObject) {
let dialog = NSOpenPanel();
dialog.title = "Choose a .txt file";
dialog.allowedFileTypes = ["txt"];
if (dialog.runModal() == NSModalResponseOK)
{
let result = dialog.url // Pathname of the file
if (result != nil) {
let path = result!.path
print("browseFile path: \(path)")
//filename_field.stringValue = path
}
} else {
// User clicked on "Cancel"
return
}
}
代码按预期打开了一个打开的对话框,我可以选择一个文件。单击打开按钮会使应用程序崩溃。在控制台中我得到:
FI_TFloatingInputWindowController object 0x60800009c0c0 overreleased while already deallocating; break on objc_overrelease_during_dealloc_error to debug
当我 运行 代码并打开对话框时,在控制台中我得到
[default] [ERROR] Failed getting container for URL: file:///Users/ruediheimlicher/Documents/LoggerdataDir/Messungen/, error: Error Domain=BRCloudDocsErrorDomain Code=12 "App library not found: 'com.apple.Documents'" UserInfo={NSDescription=App library not found: 'com.apple.Documents'}
但这并不影响应用程序。
网上有更多 NSOpen 或 NSSave 对话框的示例,代码略有不同,但我得到的每个人的结果都是一样的:崩溃,控制台上的错误完全相同。
我的代码尝试是否有错误,甚至是适用于 Swift3/sierra 的示例?
授予您的应用访问用户在 <Your Project> -> <Your Target> -> Capabilities -> App Sandbox -> File Access -> User Selected File
下选择的文件的权限。
[default] [ERROR] Failed getting container for URL: file:///Users/ruediheimlicher/Documents/LoggerdataDir/Messungen/, error: Error Domain=BRCloudDocsErrorDomain Code=12 "App library not found: 'com.apple.Documents'" UserInfo={NSDescription=App library not found: 'com.apple.Documents'}
要删除此输出,您必须在 Finder 首选项中启用 iCloud Drive。
- 打开取景器
- 打开首选项
- Select 第三个选项卡(边栏)
- 检查 iCloud Drive
然后重新运行您的应用程序
在 Swift 3/Xcode8.1/10.12.2 我正在尝试使用 NSOpenPanel 获取包含以下代码的文本文件,由 DenBeke
编写@IBAction func browseFile(sender: AnyObject) {
let dialog = NSOpenPanel();
dialog.title = "Choose a .txt file";
dialog.allowedFileTypes = ["txt"];
if (dialog.runModal() == NSModalResponseOK)
{
let result = dialog.url // Pathname of the file
if (result != nil) {
let path = result!.path
print("browseFile path: \(path)")
//filename_field.stringValue = path
}
} else {
// User clicked on "Cancel"
return
}
}
代码按预期打开了一个打开的对话框,我可以选择一个文件。单击打开按钮会使应用程序崩溃。在控制台中我得到:
FI_TFloatingInputWindowController object 0x60800009c0c0 overreleased while already deallocating; break on objc_overrelease_during_dealloc_error to debug
当我 运行 代码并打开对话框时,在控制台中我得到
[default] [ERROR] Failed getting container for URL: file:///Users/ruediheimlicher/Documents/LoggerdataDir/Messungen/, error: Error Domain=BRCloudDocsErrorDomain Code=12 "App library not found: 'com.apple.Documents'" UserInfo={NSDescription=App library not found: 'com.apple.Documents'}
但这并不影响应用程序。
网上有更多 NSOpen 或 NSSave 对话框的示例,代码略有不同,但我得到的每个人的结果都是一样的:崩溃,控制台上的错误完全相同。
我的代码尝试是否有错误,甚至是适用于 Swift3/sierra 的示例?
授予您的应用访问用户在 <Your Project> -> <Your Target> -> Capabilities -> App Sandbox -> File Access -> User Selected File
下选择的文件的权限。
[default] [ERROR] Failed getting container for URL: file:///Users/ruediheimlicher/Documents/LoggerdataDir/Messungen/, error: Error Domain=BRCloudDocsErrorDomain Code=12 "App library not found: 'com.apple.Documents'" UserInfo={NSDescription=App library not found: 'com.apple.Documents'}
要删除此输出,您必须在 Finder 首选项中启用 iCloud Drive。
- 打开取景器
- 打开首选项
- Select 第三个选项卡(边栏)
- 检查 iCloud Drive
然后重新运行您的应用程序