【发布时间】:2016-09-21 08:16:08
【问题描述】:
我在 Swift 3.0 迁移指南中找不到有关类型转换更改的任何信息。但是,我偶然发现了一些发行版。
考虑一下这个游乐场:(顺便说一句,它不能在 Xcode 7.3.1 版本的 Swift 中编译)
var data1: AnyObject?
var data2: AnyObject?
var data3: AnyObject?
var tmpAny: Any?
var tmpString = "Hello!"
tmpAny = tmpString
data1 = tmpAny as AnyObject
data2 = tmpAny as AnyObject?
data3 = tmpAny as? AnyObject // Warning "Conditional cast from 'Any?' to 'AnyObject' always succeeds
print(type(of: data1))
print(type(of: data1!))
print()
print(type(of: data2))
print(type(of: data2!))
print()
print(type(of: data3))
print(type(of: data3!))
打印出来:
Optional<AnyObject>
_SwiftValue
Optional<AnyObject>
_NSContiguousString
Optional<AnyObject>
_SwiftValue
在 Swift 3.0 中。
主要是tmpAny as AnyObject和tmpAny as AnyObject?有什么区别?
【问题讨论】:
-
只需更改它:tmpAny as AnyObject 和警告消失