在Swift中调用String上的NSString方法

时间:2014-06-03 03:15:42

标签: nsstring swift

Apple的Swift documentation表示

  

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

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

var newString: String = "this is a string"

如何在我的String var?

上执行containsString之类的NSString操作

4 个答案:

答案 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
}