NSOpenPanel возвращает значения nil для URL и URL - PullRequest
0 голосов
/ 08 апреля 2020

Я открываю модальную панель для выбора файла, но в ответ я нахожу, что значения .url nil, а .urls [0] = {}.

@IBOutlet weak var selectedFilePath: NSPathControl!

@IBAction func chooseFile(_ sender: NSButton) {
    var selectedFileURL: URL?
    let panel = NSOpenPanel()
    // configure the panel
    panel.canChooseFiles = true
    panel.canChooseDirectories = false
    panel.allowsMultipleSelection = false
    panel.allowedFileTypes = ["mov","mp4"]
    // open the panel
    if panel.runModal() == NSApplication.ModalResponse.OK {
        selectedFileURL = panel.url
        selectedFilePath.url = selectedFileURL
        ...
    }

}

Так что все последующие вызовы функций, которые проходят selectedFileURL, получают nil. Однако, чтобы еще больше запутать ситуацию, несмотря на то, что panel.url и впоследствии selectedFileURL установлены на nil, в пользовательском интерфейсе selectedFilePath NSPathControl обновляется, чтобы отразить выбранный путь к файлу!

Я пробовал много разных способов открыть и ответить на панель, но во всех случаях я не могу получить доступ к URL…

1 Ответ

0 голосов
/ 08 апреля 2020

В новых проектах приложение по умолчанию помещается в «песочницу».

В Подпись и возможности цели либо удалите App Sandbox (нажмите на маленький x справа) или в разделе Доступ к файлу включить Read Only или Read/Write типа Файл, выбранный пользователем

...