一尘不染

在Swift中对String调用NSString方法

swift

苹果的Swift
文档指出

如果您正在Cocoa或Cocoa Touch中使用Foundation框架,则可以使用整个NSString API来调用您创建的任何String值

如果我有一个String对象,例如

var newString: String = "this is a string"

如何执行类似containsStringString var的NSString操作?


阅读 191

收藏
2020-07-07

共1个答案

一尘不染

经过一些研究,看起来containsString不是一个String函数,但是可以通过桥接到来访问NSString

在苹果公司关于将Swift与Cocoa和Objective-
C结合使用
的文档中,它说

Swift会在String类型和NSString类之间自动桥接。这意味着在任何使用NSString对象的地方,都可以改用Swift
String类型,并从这两种类型中受益

但是看来,只有NSString的某些功能可以访问而无需显式桥接。要桥接到NSString并使用其任何功能,可以使用以下方法:

 //Example Swift String var
    var newString:String = "this is a string"

    //Bridging to NSString
    //1
    (newString as NSString).containsString("string")
    //2
    newString.bridgeToObjectiveC().containsString("string")
    //3
    NSString(string: newString).containsString("string")

所有这三个工作。有趣的是,只有某些NSString方法可用,Strings而其他方法则需要显式桥接。这可能是随着Swift的发展而建立的。

2020-07-07