我服用疯狂的药吗?直接从文档中删除:
"Swift自动在String类型和NSString类之间架起桥梁.这意味着在使用NSString对象的任何地方,您都可以使用Swift String类型,并获得两种类型的好处 - String类型的插值和Swift设计的API以及NSString类的广泛功能.因此,您几乎不需要在自己的代码中直接使用NSString类.实际上,当Swift导入Objective-C API时,它会用String类型替换所有NSString类型.当您的Objective-C代码使用Swift类时,导入器会在导入的API中使用NSString替换所有String类型.
要启用字符串桥接,只需导入Foundation."
我这样做了......考虑一下:
import Foundation
var str = "Hello World"
var range = str.rangeOfString("e")
// returns error: String does not contain member named: rangeOfString()
Run Code Online (Sandbox Code Playgroud)
然而:
var str = "Hello World" as NSString
var range = str.rangeOfString("e")
// returns correct (2, 1)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
Zor*_*ayr 31
从去String到NSString使用下面的构造函数:
let swiftString:String = "I'm a string."
let objCString:NSString = NSString(string:swiftString)
Run Code Online (Sandbox Code Playgroud)
在Xcode 7(测试版),使用从低垂String到NSString,如在下面的例子,将导致警告消息,从铸'字符串?不相关的类型'NSString'总是失败:
let objcString:NSString = swiftString as! NSString // results in error
Run Code Online (Sandbox Code Playgroud)
您已经在问题中找到了答案.你错过了演员.在编写Swift代码时,就像这样的语句
var str = "Hello World"
Run Code Online (Sandbox Code Playgroud)
创造一个Swift String,而不是一个NSString.为了使其工作NSString,您应该在使用之前将其转换为NSString使用as操作符.
这与调用用Objective-C编写的方法并提供String而不是NSString作为参数的方法不同.
| 归档时间: |
|
| 查看次数: |
24991 次 |
| 最近记录: |