预期序列表达式swift 3

时间:2016-09-07 23:12:35

标签: ios swift swift3

我使用循环设置标签栏项目的原始图像,因此未选择的状态不是灰色的(我的原始图标为白色)。但是,看起来最近的Xcode 8更新破坏了代码:

for (items in 0  ..< tabBar.items!.count ){
    let tabItemIndex = tabBar.items![items]
    tabItemIndex.image = tabItemIndex.image!.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}

}

我在第一行收到以下错误:Expected 'in' after for-each patternExpected Sequence expression for for-each loopExpected pattern

任何人都可以帮我解决这个问题吗?它一直很好,直到今天。

谢谢!

3 个答案:

答案 0 :(得分:9)

for x in y是Swift中的实际表达式。你无法用括号for (x in y)分解它 - 将forin分开并使表达式对编译器来说似乎是无意义的。

所以,删除括号,一切都会好的。

答案 1 :(得分:2)

关于如何创建循环,以及一些非常不安全的强制解包,你会遇到一些问题。试试这个:

if let items = tabBar.items {
    for tabBarItem in items {
        if let image = tabBarItem.image {
            tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        }
    }
}

甚至更干净,像这样:

tabBar.items?.forEach { tabBarItem in
    if let image = tabBarItem.image {
        tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
    }
}

答案 2 :(得分:0)

在Swift中,与Objective-C不同,此结构中没有括号。删除括号以修复语法错误。

然而,除了语法错误之外,还有样式和安全问题:请参阅picciano的答案,以便更清晰,更安全地重写循环。