在Swift强制进行非法的类型转换

rgb*_*rgb 1 objective-c swift

在我的Objective-C应用程序中有一个失败的情况,其中(NSDate*)指向CFString并在调用date方法时崩溃.

我正在Swift中编写一个单元测试来模拟这种情况,但由于Swift的类型安全性,它似乎是不可能的.我已经编写了一个Objective-C工厂类来创建乱搞对象,但我想知道是否有人知道在Swift中强制非法类型转换的方法.就像在运行时不会失败的版本一样:

obj.date = NSString() as! NSDate
Run Code Online (Sandbox Code Playgroud)

Dar*_*ren 5

as!将始终执行运行时检查,并将unsafeDowncast()在调试版本中执行运行时检查(但不是发布版本).

要始终跳过运行时检查,请使用unsafeBitCast():

let myString : NSString = "Hello"
let myDate : NSDate = unsafeBitCast(myString, NSDate.self)

NSLog("%@", myDate) // "Hello"
Run Code Online (Sandbox Code Playgroud)