Swift未来版本中的Spring弃用错误

时间:2019-01-25 22:56:50

标签: swift spring xcode

我在一个正在开发的开源广播应用程序的项目中使用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>

我需要使用什么,我尝试过没有,我曾经尝试使用过?但我不断出错。

感谢您的帮助。

1 个答案:

答案 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)
        }
    }
}
相关问题