我在一个开源无线电应用程序的项目中使用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抛出错误:
使用'!'此处已弃用,将在以后的版本中删除<
我需要用什么,我试过不用,我试过用?但我总是犯错误。
如有任何帮助,我们将不胜感激。

最佳答案

解决方法很简单:
一。强制拆封或强制上下投真的很不安全,可能这就是苹果删除它的原因。

var tabBarItems = self.tabBar.items as [UITabBarItem]!

更改为:
var tabBarItems = self.tabBar.items as [UITabBarItem]?

但是tabbaritem可以是零,所以我推荐一个警卫或者类似的东西。
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)
        }
    }
}

10-06 02:05