Быстрое двойное развертывание опций
Я понимаю, что необязательно в 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]
.