作为对 Objective-C 互用性(互操作性)的一部分,Swift提供快捷高效的方式来处理Cocoa数据类型。
Swift 会自动将一些 Objective-C 类型转换为 Swift 类型,以及将 Swift 类型转换为 Objective-C 类型。在 Objective-C 和 Swift 中也有一些具有互用性的数据类型。那些可转换的数据类型或者具有互用性的数据类型被称为bridged数据类型。举个例子,在 Swift 中,您可以将一个Array值传递给一个要求为NSArray对象的方法。你也可以转换一个 bridged 类型和它的副本。当你使用as转换 bridged 类型或者那些由常量和变量所提供的类型时,Swift 会桥接它们的数据类型。
Swift 也提供一种简单便捷的覆盖方法来连接 Foundation 的数据类型,在后面的 Swift 语言中,你能在它的句法中感受到自然和统一。
字符串
Swift会在String类型和NSString类型中自动转换。这意味着在可以使用NSString对象的地方,您可以使用一个属于 Swift 的String类型代替它,这样做会同时拥有它们数据类型的特点,String类型的插值,基于Swift设计的APIs以及NSString类更广的适用范围。因此,您几乎不必再在你的代码中使用NSString类。事实上,当 Swift 接入 Objective-C APIs 时,它将把所有NSString类型替换为String类型。当您在您的Objective-C代码中使用 Swift 类时,接入的API会将所有String类型替换成NSString类型。
为了允许字符串转换,只需接入Foundation。举个例子,您在 Swift 的一个字符串中调用了capitalizedString--一个NSString类的方法,此后 Swift 会自动将String转换为一个NSString对象并调用方法。这个方法甚至会返回一个 Swift 的String类型,因为它在接入的时候被替换了。
复制代码import Foundation
let greeting = "hello, world!"
let capitalizedGreeting = greeting.capitalizedString
// capitalizedGreeting: String = Hello, World!
如果您确实需要用到一个NSString对象,您可以用一个 Swift 的String值并转换它。String类型总是可以从一个NSString对象转换为一个Swift的String的值,因此,再没有必要去使用一个可选的类型转换器()as?)。您也可以再一个字符串中通过定义常量和变量来创建一个NSString对象。
复制代码







