создать plist и скопировать его в папку MacOS Swift - PullRequest
0 голосов
/ 02 декабря 2018

Я ломал голову над тем, как создать и записать список для определенного каталога папок в MacOS.В моем случае это папка LaunchDaemons в / Library.Я знаю, как создать plist, но это запись в папку LaunchDaemons, с которой у меня возникают проблемы.Этот код ниже, насколько я понимаю, предназначен для песочницы, но как мне сделать это вне песочницы?Приветствия

 let fileManager = FileManager.default
 let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
 let path = documentDirectory.appending("test.plist")

Я добавил код с помощью, которую я получил, и не имею ошибок, но он ничего не записывает в папку.Вот код:

 let libraryDirectory = try! FileManager.default.url(for: .libraryDirectory, in: .localDomainMask, appropriateFor: nil, create: false)
    let launchDaemonsFolder = libraryDirectory.appendingPathComponent("LaunchDaemons/test.plist")

    if FileManager.default.fileExists(atPath: launchDaemonsFolder.path) {

        print(launchDaemonsFolder)


        let plistDictionary : [String: Any] = [
            "ExitTimeOut": 600,
            "Label": "BOOT.SHUTDOWN.SERVICE",
            "ProgramArguments": ["/test.sh"] as Array,
            "RunAtLoad": false,
            "WorkingDirectory": "/"

        ]

        let dictionaryResult = NSDictionary(dictionary: plistDictionary)
        let fileWritten = dictionaryResult.write(to: launchDaemonsFolder, atomically: true)
        print("is the file created: \(fileWritten)")



    } else {

        print("File Exists")

    }

1 Ответ

0 голосов
/ 02 декабря 2018

Прежде всего NSSearchPathForDirectoriesInDomains устарел, в любом случае настоятельно рекомендуется использовать API, связанный с URL.

Этот код создает URL, указывающий на /Library/LaunchDaemons

let libraryDirectory = try! FileManager.default.url(for: .libraryDirectory, in: .localDomainMask, appropriateFor: nil, create: false)
let launchDaemonsFolder = libraryDirectory.appendingPathComponent("LaunchDaemons")
...