预期序列表达式 swift 3
Expected Sequence expression swift 3
我正在使用一个循环来设置标签栏项目的原始图像,因此未选中状态不是灰色(我的原始图标是白色)。但是,最近的 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 pattern
、Expected Sequence expression for for-each loop
和 Expected pattern
。
谁能帮我解决这个问题?直到今天它都很好用。
谢谢!!
您在创建循环和一些非常不安全的强制解包方面遇到了一些问题。试试这个:
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)
}
}
在Swift中,与Objective-C不同,这个结构中没有括号。删除括号以修复语法错误。
但是,除了语法错误之外,这里还存在风格和安全问题:请参阅 picciano 的回答以获取更清晰、更安全的重写循环的方法。
for x in y
是 Swift 中的实际表达式。您不能用括号 for (x in y)
将其分开 — 它将 for
与 in
分开,并导致表达式对编译器来说似乎是无意义的。
所以,去掉括号,一切都会好起来的。
我正在使用一个循环来设置标签栏项目的原始图像,因此未选中状态不是灰色(我的原始图标是白色)。但是,最近的 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 pattern
、Expected Sequence expression for for-each loop
和 Expected pattern
。
谁能帮我解决这个问题?直到今天它都很好用。
谢谢!!
您在创建循环和一些非常不安全的强制解包方面遇到了一些问题。试试这个:
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)
}
}
在Swift中,与Objective-C不同,这个结构中没有括号。删除括号以修复语法错误。
但是,除了语法错误之外,这里还存在风格和安全问题:请参阅 picciano 的回答以获取更清晰、更安全的重写循环的方法。
for x in y
是 Swift 中的实际表达式。您不能用括号 for (x in y)
将其分开 — 它将 for
与 in
分开,并导致表达式对编译器来说似乎是无意义的。
所以,去掉括号,一切都会好起来的。