【问题标题】:String.init(contentsOfFile:) replacement for Linux?String.init(contentsOfFile:) 替代 Linux?
【发布时间】:2016-12-25 00:58:10
【问题描述】:

将我的 Swift 3 应用程序部署到 Heroku 后,它崩溃并出现以下错误:

fatal error: init(contentsOfFile:usedEncoding:) is not yet implemented: file Foundation/NSString.swift, line 1255

在 Ubuntu 上我可以用什么来代替 String.init(contentsOfFile:)

【问题讨论】:

  • 很遗憾,Apple 不提供此基本功能...我需要浪费时间解决此问题并导入第三方库以支持此功能...
  • 我不知道答案是否对你有用,但如果它没有一个 oper-source swift 包FileUtils,它是 C std 上的一个包装器,如 fopen、fwrite等,支持创建、读取和写入文件等基本功能:)

标签: swift string file swift3 foundation


【解决方案1】:

看到最新的 Swift 标准库源码,String.init(contentsOfFile:) 内部调用了NSString.init(contentsOfFile:usedEncoding:)。 (NSStringAPI.swift)

如您所见,NSString.init(contentsOfFile:usedEncoding:) 的 Linux 版本尚未实现。 (NSString.swift)

似乎NSString.init(contentsOfFile:encoding:) 已经实现并且String.init(contentsOfFile:encoding:) 调用它。因此,如果您知道文件的编码,请使用String.init(contentsOfFile:encoding:),例如:

let fileContent =  try? String(contentsOfFile: filePath, encoding: .utf8)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2012-04-27
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    相关资源
    最近更新 更多