NSString stringWithContentsOfFile失败,似乎是错误的错误代码
我试图加载一个文件到一个string。 这是我正在使用的代码:
NSError *error = nil; NSString *fullPath = [[NSBundle mainBundle] pathForResource:filename ofType:@"html"]; NSString *text = [NSString stringWithContentsOfFile:fullPath encoding:NSUTF8StringEncoding error:&error];
当传入@“about”作为文件名,它工作得很好,显示代码的作品。 当在@“eula”作为文件名传入时,它会失败,'cocoa错误258',这将转换为NSFileReadInvalidFileNameError。 但是,如果我交换文件的内容,但保持相同的名称,另一个文件无法certificate没有什么错误的文件名,这是与内容有关。
about文件是相当简单的HTML,但eula文件是法律部门从Word导出的大量混乱文件。
有没有人知道可能会导致此错误被提出的HTML文件内的任何内容?
非常感谢,
山姆
这个错误几乎肯定是你的文件不是UTF-8,但你是对的,这听起来像错误报告中的错误。
用BBEdit(或免费的TextWrangler)打开eula文件,看看它使用什么编码。 将编码更改为UTF-8并保存。 比较两个文件,看看出现了什么差异。 用新的文件replace原来的文件(修复任何毛刺)。
如果解决了问题,则使用Apple Bug Reporter来报告错误报告中的错误。
我刚刚花了45分钟的时间解决这个问题,只是在我的情况下,解决scheme很愚蠢 ,问题稍有不同。
- 我的资源目录中有一个名为Playlist.txt的文件。 它加载得很好。
- 该文件在XCode中的某一点进行了修改。
- 文件停止加载正确,与上面相同的错误。 然而,它从来没有被移动,也没有改变其编码types。
- 我在XCode目录下的文件上做了一个命令(Get Info),它告诉我这是UTF-8(按预期)。
- 我尝试了“usedEncoding”的方式来阅读文件,没有骰子。 同样的错误,编码是返回null。
- 最后,我从XCode中删除了该文件,再次将其拖入,并执行了Clean All。 这解决了这个问题。
这不是第一次XCode神奇caching的东西(不正确)导致我浪费了几个小时的时间。 如果你有这样的错误没有意义,请尝试删除和replace文件,并清除所有目标。
我有和你一样的错误,使用文件名与[[NSBundle mainBundle] pathForResource:@“pageList”ofType:@“txt”]]祝你好运!
在这种情况下+stringWithContentsOfFile:encoding:error:
会失败的最可能的原因是如果你提供了错误的编码。 你确定你的@"eula"
文件是UTF8编码吗?
如果你不确定文件的编码方式,你总是可以试试+stringWithContentsOfFile:usedEncoding:error:
来看看它是否有效,以及它是什么编码。
不知道这是否是你的问题,但我只是有一个类似的事情(stringWithContentsOfFile,没有JSON),问题是该文件有CRLF(窗口)行结束和西方无论它称为编码。 我用SubEthaEdit转换为LF和UTF-8,一切工作正常。
我遇到了同样的错误。
当我玩了一下,似乎没有将文件包含在目标的复制束资源中。
我做到了,它工作得很好。
但是,不得不说 – 对于这样一个简单的原因,错误是相当具有误导性的。 从Xcode只是一个糟糕的猜测
- iOS:在Objective-C ++中定义和使用C ++
- AudioOutputUnitStart非常慢
- 在UIView上扭曲\弯曲效果?
- MakeGenericMethod / MakeGenericType在Xamarin.iOS上
- 编译用于iOS项目的外部C ++库
- UITableViewController中的状态栏
- MonoTouch.Foundation.MonoTouchException已经抛出了Objective-Cexception。 名称:NSInternalInconsistencyException
- HttpClient setReachabilityStatusChangedBlock声明没有接口
- 从iOS 9的推送通知启动时崩溃