В Swift 3/Xcode8.1/10.12.2 Я пытаюсь использовать NSOpenPanel, чтобы получить текстовый файл со следующим кодом, написанный DenBekeNSOpenPanel/NSSavePanel врезается в Swift 3
@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 в сети с немного другим кодом, но со всеми я получаю тот же результат: Crash и ту же самую ошибку на консоли.
Есть ли ошибка в попытках моего кода или даже пример, который работает с Swift3/sierra?
У меня нет такой настройки в моем проекте. – heimi
@heimi Я скорректировал свой ответ на последнюю версию Xcode. – John
очень хорошо, что сделал трюк. Благодарю. – heimi