gpt4 book ai didi

xcode - Swift 双重解包 Optionals

转载 作者:IT王子 更新时间:2023-10-29 05:43:57 25 4
gpt4 key购买 nike

我了解 Swift 中的可选内容,但我只是遇到了一个“双重包装可选”,如果我不使用两个 '!',Xcode 会给出一个编译器错误

Value of optional type 'String?' not unwrapped; did you mean to use '!' or ‘?'?

我有以下代码,其中 appNSRunningApplication 类型。

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 where apps = [AnyObject]

最佳答案

问题是 NSWorkspace().runningApplications 返回一个AnyObject 数组,必须转换为数组NSRunningApplication:

let apps = NSWorkspace().runningApplications as! [NSRunningApplication]
let filteredApps = apps.filter {
$0.activationPolicy == NSApplicationActivationPolicy.Regular
}
for app in apps {
let name: String = app.localizedName!
}

关于xcode - Swift 双重解包 Optionals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29351438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com