Быстрое двойное развертывание опций

Я понимаю, что необязательно в Swift, но я только что столкнулся с«Двойная упаковка»где, если я не буду использовать два'!' Xcode выдает ошибку компилятора

Значение необязательного типа 'String?' не развернутый; ты хотел использовать '!' или же '?'?

У меня есть следующий код, гдеapp имеет типNSRunningApplication.

let name: String = app.localizedName!

Почему я должен использовать два!? Этого недостаточно, чтобы развернуть переменную, потому что она имеет типvar localizedName: String?.

Контекст: Xcode хочет, чтобы я использовалlet name: String = app.localizedName!!в противном случае выдает ошибку компилятора выше.app переменная определяется следующим образом:

var apps = NSWorkspace().runningApplications.filter{$0.activationPolicy == NSApplicationActivationPolicy.Regular}
for app in apps{
    //code posted above
    …
}

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

Постскриптум Есть ли способ определить тип при использовании быстрого перечисления? подобноfor Foo(app) in apps гдеapps = [AnyObject].

Ответы на вопрос(1)

Ваш ответ на вопрос