Невозможно передать аргументы через функцию swift - PullRequest
0 голосов
/ 31 марта 2020

Эта проблема возникла при попытке запустить команды macOS в файле swift. У меня есть некоторые проблемы передачи аргументов в функции с помощью Swift. Когда я запускаю строки внутри функции date вне определения функции, все работает просто отлично. Я не могу увидеть никаких ошибок в XCode. Как новичок Swift ie, любые советы приветствуются!

import Foundation
import Cocoa

//Command arguments
let dateLocation = "/bin/date"
let format = "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
let command = Process()

//Command function with arguments
func date(args: String) -> String {
    command.executableURL = URL(fileURLWithPath: dateLocation)
    command.arguments = [args]
    try command.run()
}

//Run function
date(args: format)

1 Ответ

0 голосов
/ 31 марта 2020

Во-первых, ваша функция объявлена ​​как возвращающая строку, но ничего не возвращает, а во-вторых, вы вызываете функцию, которая может выдать ошибку, которую вы правильно обрабатываете, используя try, но вам нужно либо обработать любую возможную ошибку или выбросить его из вашей функции. Здесь я выбрал последнее в своем примере, добавив throws к объявлению

func date(args: String) throws {
    command.executableURL = URL(fileURLWithPath: dateLocation)
    command.arguments = [args]
    try command.run()
}

Теперь вы можете вызывать свою функцию и ловить любую ошибку, как показано ниже

do {
    try date(args: format)
} catch {
    print(error)
}

Вывод:

ДАТА: 2020-03-31
ВРЕМЯ: 18: 50: 25

...