2016-12-27 6 views
4

В 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?

ответ

5

Дайте вашему приложению доступ к выбранным пользователем файлам под <Your Project> -> <Your Target> -> Capabilities -> App Sandbox -> File Access -> User Selected File.

User Selected File Permission

+0

У меня нет такой настройки в моем проекте. – heimi

+0

@heimi Я скорректировал свой ответ на последнюю версию Xcode. – John

+0

очень хорошо, что сделал трюк. Благодарю. – heimi

2

[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'}

Чтобы удалить этот вывод, который вы должны включить ICloud Drive в ваших Finder предпочтений.

  • Открыть искатель
  • Открыть prefences
  • Выберите третью вкладку (Sidebar)
  • Check ICloud Drive

Затем запустите приложение

+0

iCloud Drive уже включен. – heimi

 Смежные вопросы

  • Нет связанных вопросов^_^