Apple的Swift documentation表示
如果您正在使用Cocoa或Cocoa Touch中的Foundation框架,则可以使用整个NSString API调用您创建的任何String值
如果我有一个String对象,例如
var newString: String = "this is a string"
如何在我的String var?
上执行containsString
之类的NSString操作
答案 0 :(得分:36)
经过一些研究后,看起来containsString
不是String
函数,但可以通过桥接到NSString
来访问。
在Apple Using Swift with Cocoa and 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的发展而建立的。
答案 1 :(得分:9)
方法是相同的,但它们只是使用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")
答案 2 :(得分:4)
所以你真正需要做的就是这个
var str:NSString = "Checkcontains"
str.containsString("ckc")
注意如何在那里放置显式NSString的声明。然后你可以使用containsString方法。如果你只使用var并且不将其设置为NSString,那么你就会遇到问题。
答案 3 :(得分:-4)
您可以在Swift String对象上调用任何NSString方法;在引擎盖下,这两个物体是免费的桥接式。因此,您可以这样做:
var newString = "this is a string"
if newString.containsString("string") {
//do your stuff
}