You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Obj-C读取文件代码转Swift后出现NSCocoaErrorDomain Code=256错误的问题排查

问题原因及修正方案

你的代码里有两个关键问题导致了读取文件失败,咱们一步步拆解清楚:

1. 错误的本地URL创建方式

你用URL(string: pathToFile)来转换本地文件路径,但这个方法是专门用来创建网络URL(比如https://example.com)的。对于本地文件路径,必须使用URL(fileURLWithPath: pathToFile)才能生成有效的文件URL。用错方法会导致URL无效,自然无法读取到文件内容。

2. 可以更简洁高效的实现逻辑

其实你完全不需要先获取文件路径再转URL,直接调用Bundle.main.url(forResource:ofType:)就能拿到文件的URL,这比先拿路径再转URL更直接,也从根源避免了转换出错的可能。

另外,你的catch块是空的,这会导致错误信息被直接吞掉,非常不利于调试,建议至少打印错误信息方便定位问题。

修正后的代码

func getContentOfUrl(by fileName: String) -> String? {
    guard let fileUrl = Bundle.main.url(forResource: fileName, withExtension: "txt") else {
        print("找不到文件 \(fileName).txt,请确认文件是否已加入项目")
        return nil
    }
    do {
        return try String(contentsOf: fileUrl, encoding: .utf8)
    } catch let error {
        print("读取文件失败,错误信息:\(error)")
        return nil
    }
}

额外检查提示

如果修正后还是报错,别忘了确认两个细节:

  • MyFile.txt确实已经添加到Xcode项目中,并且在Target Membership里勾选了对应的App目标(确保它被打包进App Bundle)
  • 文件名拼写完全正确(iOS文件系统区分大小写,注意不要写错大小写)

内容的提问来源于stack exchange,提问作者Sirop4ik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:39:11