我正在尝试将文件加载到字符串中.这是我正在使用的代码:
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文件中可能导致引发此错误的任何内容?
非常感谢,
山姆
我只花了45分钟来解决这个问题,只是在我的情况下,解决方案是愚蠢的,问题略有不同.
我的资源目录中有一个名为Playlist.txt的文件.它装得很好.
该文件在XCode内的某一点进行了修改.
文件已正确停止加载,但错误与上述相同.但是,它从未被移动过,也没有改变它的编码类型.
我在XCode目录中的文件上做了一个命令-I(获取信息),它告诉我它是UTF-8(如预期的那样).
我尝试了"usedEncoding"阅读文件的方式,没有骰子.同样的错误,编码返回null.
最后,我从XCode中删除了文件,再次将其拖入,然后执行了全部清理.这解决了问题.
这不是第一次XCode神奇地缓存(错误)导致我浪费了数小时的浪费时间.如果您有这样的错误没有意义,请尝试删除并替换文件并清除所有目标.
错误几乎肯定是你的文件不是UTF-8,但是你是对的,这听起来像是错误报告中的错误.
用BBEdit(或免费的TextWrangler)打开eula文件,看看它使用的是什么编码.将编码更改为UTF-8并保存.对两个文件进行差异以查看出现的差异.用新的文件替换原始文件(修复任何毛刺).
如果这样可以解决问题,那么请使用Apple Bug Reporter报告错误报告中的错误.