我正在尝试将文件加载到字符串中。这是我正在使用的代码:
NSError *error = nil;
NSString *fullPath = [[NSBundle mainBundle] pathForResource:filename
ofType:@"html"];
NSString *text = [NSString stringWithContentsOfFile:fullPath
encoding:NSUTF8StringEncoding
error:&error];
当传入@“about”作为文件名时,它完全正常,显示代码有效。 当传入@“eula”作为文件名时,它以“Cocoa error 258”失败,转换为NSFileReadInvalidFileNameError。但是,如果我交换文件的内容但保持名称相同,则另一个文件无法证明文件名没有任何问题,这与内容有关。
about文件是相当简单的HTML,但eula文件是由法律部门从Word导出的大量混乱。
有没有人知道HTML文件中可能导致引发此错误的任何内容?
非常感谢,
萨姆
答案 0 :(得分:10)
我刚刚花了45分钟解决这个问题,只是在我的情况下,解决方案是愚蠢,问题略有不同。
这不是第一次XCode神奇地缓存(错误)导致我浪费了数小时的浪费时间。如果您有这样的错误没有意义,请尝试删除并替换文件并清除所有目标。
答案 1 :(得分:8)
错误几乎肯定是你的文件不是UTF-8,但你是对的,这听起来像错误报告中的错误。
使用BBEdit(或免费的TextWrangler)打开eula文件,看看它使用的是什么编码。将编码更改为UTF-8并保存。对两个文件进行差异以查看出现的差异。用新的文件替换原始文件(修复任何故障)。
如果这样可以解决问题,请使用Apple Bug Reporter报告错误报告中的错误。
答案 2 :(得分:4)
我和你有同样的错误,请使用文件名 [[NSBundle mainBundle] pathForResource:@“pageList”ofType:@“txt”]祝你好运!
答案 3 :(得分:3)
+stringWithContentsOfFile:encoding:error:
在这种情况下失败的最可能原因是,如果您提供了错误的编码。您确定@"eula"
文件是UTF8编码的吗?
如果您不确定该文件的编码方式,可以随时尝试+stringWithContentsOfFile:usedEncoding:error:
,看看它是否有效以及它的编码方式。
答案 4 :(得分:0)
不知道这是不是你的问题,但我只是有一个类似的东西(stringWithContentsOfFile,没有JSON),问题是该文件有CRLF(windows)行结尾和西方 - 无论它叫什么编码。我使用SubEthaEdit转换为LF和UTF-8,一切正常。
答案 5 :(得分:0)
我遇到了同样的错误。
当我玩了一下时,似乎我没有将文件包含在目标的复制包资源中。
我做到了,它运作良好。
但是,不得不说 - 错误对于这么简单的原因是非常误导的。只是来自Xcode的错误猜测