我正在尝试将一些基本的应用程序从OS X移植到Linux,但似乎Linux平台上缺少基本的东西。有些文件缺少什么? 这是一个例子:
exmcast.swift:7:20: error: value of type 'String' has no member 'stringByReplacingOccurrencesOfString'
let name: String = address.stringByReplacingOccurrencesOfString(".", withString: "_")
这个简单的代码适用于OS X.在Linux上 - 你会看到结果。 当没有基本信息丢失时,很难移植任何东西。 看起来甚至缺少基本的东西......
答案 0 :(得分:5)
Swift 3将于2016年秋季发布。
最近开源的Swift和Linux端口是work in progress:
该端口仍在进行中,但我们很高兴地说它现在可用于实验。
您可以前往Swift.org和github.com/apple享受精彩的作品。
当您发现尚未实施的内容时,您可以提交错误和/或帮助实施该功能。
open source Swift的新版本将定期发布在Swift.org上。
答案 1 :(得分:3)
您尝试调用的方法实际上是NSString的一部分。字符串在幕后桥接到NSString,这就是为什么你能够在OS X上使用该方法的原因.NSString是Foundation框架的一部分,而Foundation并不是完全为Linux实现的。您可以在此处查看基金会各个部分的状态:Foundation Status。 NSString目前只是部分实现。
答案 2 :(得分:0)
在OSX上,您仍需要导入Foundation
在您的情况下,您可以自由使用纯Swift解决方案
let str = "alfa.beta"
// (1)
let str1 = str.characters.map {
$0 == "." ? "_": $0
}.reduce("") { (str, c) -> String in
str + String(c)
}
// (2)
let str2 = String(str.characters.split(".").joinWithSeparator(["_"]))
print(str,str1,str2) // alfa.beta alfa_beta alfa_beta
对于更高级的东西,你有强大的功能
mutating func replaceRange<C : CollectionType where C.Generator.Element == Character>(subRange: Range<Index>, with newElements: C)
或
mutating func replaceRange(subRange: Range<Index>, with newElements: String)