Свифт Словарьполучение дополнительных значений - PullRequest
1 голос
/ 12 ноября 2019

Прошло много лет с тех пор, как я работал в macOS, и более двух с тех пор, как я коснулся Swift. Я бегу кругами по этому вопросу:

У меня есть две функции, первая содержит цикл while для проверки значения в словаре, возвращаемого второй. :

func checkPath(_ strPath:String) { 

...
while bIsDesktop == false {
    let dictResults:Dictionary<String, Any> = checkPath(arrPath)

    if dictResults["isDesktop"] { //-->I'm getting crushed here
        //do something with returned array
    }

}

private func checkPath(_ arrPath:Array<String>) -> Dictionary<String, Any> {
    var bIsDesktop = false
    var arrPath = arrPath
    if arrPath[0] != "Desktop" {
       arrPath.removeFirst()
    } else {
       bIsDesktop = true
    }

    return ["paths":arrPath, "isDesktop":bIsDesktop]
}

arrPath - это массив строк (элементов пути к файлу)

Я знаю, что возвращаемый словарь похож на [String: Any]

Проблема не имеет значениято, что я делаю, я сталкиваюсь с некоторой ошибкой компилятора, например:

Optional type 'Any?' cannot be used as a boolean; test for '!= nil' instead

В более сложной схеме, в случае, если есть более элегантное решение, я пытаюсь сделать это - обрезать путь к папкевыбранный пользователем /// File: User / username / Desktop / ... и просто иметь рабочий стол / ... Если есть лучшее решение, чем то, что я пытаюсь, я был бы рад увидеть его, но если бы вы также могли объяснитьпочему я не могу вывести опционально из словаря, я бы это тоже оценил.

Я пробовал:

guard let bIsDesktop = dictResults["isDesktop" as Bool else { ...
if dictResults?["isDesktop"]...

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

...