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
相关产品推荐
相关产品推荐

