在Swift bridgeToObjectiveC()
到String
之间转换真的需要NSString
吗? bridgeToObjectiveC()
的行为是什么?由于我已阅读过很多地方,因此无需转换为快速String
到NSString
。
答案 0 :(得分:3)
如果您要导入String
框架,则swift NSString
到Foundation
之间的类型转换是隐式的。如果您使用import Foundation
,则无需使用{{ 1}} for strings.From swift guide
Swift自动在String类型和NSString之间架起桥梁 类。这意味着您可以在任何地方使用NSString对象 使用Swift String类型代替并获得两者的好处 types- String类型的插值和Swift设计的API和 NSString类的广泛功能。出于这个原因,你应该 几乎从不需要在您自己的代码中直接使用NSString类。 事实上,当Swift导入Objective-C API时,它取代了所有的 具有String类型的NSString类型。当您的Objective-C代码使用 Swift类,导入器替换所有的String类型 导入API中的NSString。
要启用字符串桥接,只需导入Foundation。
但在某些情况下,默认桥接不起作用,就像你无法检查字符串的长度
bridgeToObjectiveC()
对于这种情况,默认桥接将不起作用。
答案 1 :(得分:0)
假定是隐含的,但有很多地方不是。字符串,数组和字典缺少几个Obj-C对应的标量操作,例如String.length
。
答案 2 :(得分:0)
bridgeToObjectiveC()在Swift 2.2中不可用
而是使用:_bridgeToObjectiveC()
例如:
var temp: String = "hello"
print(temp._bridgeToObjectiveC().length)