Apple的Swift 文档说明了这一点
如果您在Cocoa或Cocoa Touch中使用Foundation框架,则可以使用整个NSString API调用您创建的任何String值
如果我有一个String对象,例如
var newString: String = "this is a string"
如何containsString
在我的String var上执行NSString操作?
方法是相同的,但它们只是使用swift的语法.例如:
var newString: String = "this is a string" newString = newString.stringByAppendingString(" that is now longer") println(newString)
代替:
NSString* newString = @"this is a string"; newString = [newString stringByAppendingString:@" that is now longer"]; NSLog(newString);
注意:
并非所有NSString的方法都可以在String上调用.有些你必须首先桥接到NSString:
newString.bridgeToObjectiveC().containsString("string")
做了一些研究之后,它看起来containsString
不是一个String
功能,但可以通过桥接来访问NSString
.
在Apple关于将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的发展而建立的.