将我的Swift 3应用程序部署到Heroku之后,它崩溃并显示以下错误:
fatal error: init(contentsOfFile:usedEncoding:) is not yet implemented: file Foundation/NSString.swift, line 1255
在Ubuntu上可以代替
String.init(contentsOfFile:)
使用什么? 最佳答案
查看Swift标准库的最新源代码,String.init(contentsOfFile:)
在内部调用NSString.init(contentsOfFile:usedEncoding:)
。 (NSStringAPI.swift)
如您所见,Linux版本的NSString.init(contentsOfFile:usedEncoding:)
尚未实现。 (NSString.swift)
似乎NSString.init(contentsOfFile:encoding:)
已经实现,并且String.init(contentsOfFile:encoding:)
对其进行了调用。因此,如果您知道文件的编码,请使用String.init(contentsOfFile:encoding:)
像这样:
let fileContent = try? String(contentsOfFile: filePath, encoding: .utf8)
如果您不知道文件的字符串编码,则可能需要自己实现功能。