gpt4 book ai didi

swift - 循环 [AnyObject]?结果中没有名为生成器的成员

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

为什么不能直接遍历 [AnyObject]??没有命名生成器是什么意思?遍历 [AnyObject]? 类型的正确技术是什么?

这段代码给我一个错误,告诉我它没有名为 generator 的成员。

for screen in NSScreen.screens() {
var result : Bool = workspace.setDesktopImageURL(imgurl, forScreen: screen, options: nil, error: &error)
}

最佳答案

screens 返回一个可选的,所以在使用实际值之前你必须解包 - 推荐的方法是可选绑定(bind):

if let screens = NSScreen.screens() {
for screen in screens {
var result : Bool = workspace.setDesktopImageURL(imgurl, forScreen: screen, options: nil, error: &error)
}
}

阅读更多关于 Optionals 的信息

请注意 NSScreen.screens 返回 [AnyObject]?,因此您可能希望将数组转换为可选的 [NSScreen]绑定(bind):

if let screens = NSScreen.screens() as? [NSScreen] {
for screen in screens {
var result : Bool = workspace.setDesktopImageURL(imgurl, forScreen: screen, options: nil, error: &error)
}
}

附录 对评论中问题的回答:为什么错误消息显示[AnyObject]?没有名为生成器的成员

可选值的类型与其包含的值不同(可选值实际上是一个枚举)。您可以迭代数组,但不能迭代整数或枚举。

为了理解区别,让我举一个真实的例子:你在易趣上买了一台新电视,包裹寄给你,你做的第一件事是检查包裹(可选)是否为空(无).一旦你确认电视在里面,你必须打开它,把盒子放在一边。电视在包装内时您无法使用。类似地,可选项是一个容器:它不是它包含的值,并且它没有相同的类型。它可以为空,也可以包含有效值。

关于swift - 循环 [AnyObject]?结果中没有名为生成器的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852656/

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