将我的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)

如果您不知道文件的字符串编码,则可能需要自己实现功能。

09-29 20:06