我在一个正在开发的开源广播应用程序的项目中使用Spring。
代码是:
@IBInspectable var firstSelectedImage: UIImage? {
didSet {
if let image = firstSelectedImage {
var tabBarItems = self.tabBar.items as [UITabBarItem]!
tabBarItems?[0].selectedImage = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate)
}
}
}
我遇到的问题是线:
var tabBarItems = self.tabBar.items as [UITabBarItem]!
Xcode引发错误:
使用'!'这里已弃用,并将在以后的版本中删除<< / p>
我需要使用什么,我尝试过没有,我曾经尝试使用过?但我不断出错。
感谢您的帮助。
答案 0 :(得分:1)
解决方案非常简单: 1.强制拆包或强制上下转换确实非常不安全,这可能是Apple删除它的原因。
var tabBarItems = self.tabBar.items as [UITabBarItem]!
更改为:
var tabBarItems = self.tabBar.items as [UITabBarItem]?
但是tabBarItems可以为nil,所以我推荐一个警卫或类似的东西。
guard var tabBarItems = self.tabBar.items as [UITabBarItem]? else { return }
示例代码:
class C1 {
}
class C2: C1 {
}
let cc2 = C2()
var firstSelectedImage: UIImage? {
didSet {
if let image = firstSelectedImage {
guard var tabBarItems = cc2 as C1? else {return}
print(tabBarItems)
}
}
}