NSString stringWithContentsOfFile failing with what seems to be the wrong error code

后端 未结 6 1856
闹比i
闹比i 2021-02-12 22:33

I\'m trying to load a file into a string. Here is the code I\'m using:

NSError *error = nil;
NSString *fullPath = [[NSBundle mainBundle] pathForResource:filename         


        
相关标签:
6条回答
  • 2021-02-12 22:40

    Don't know if this is your problem, but I just had a similar thing (stringWithContentsOfFile, no JSON), and the problem was that the file had CRLF (windows) line-endings and Western-whatever-it's-called encoding. I used SubEthaEdit to convert to LF and UTF-8, and everything works fine.

    0 讨论(0)
  • 2021-02-12 22:42

    I had the same error with you ,use file name with [[NSBundle mainBundle] pathForResource:@"pageList" ofType:@"txt"]] good luck!

    0 讨论(0)
  • 2021-02-12 22:43

    I ran into the same error.

    When I played around a bit, it appeared that I was not including the file in copy bundle resources of the target.

    I did that and it worked fine.

    But, have to say -- error is quite misleading for such a simple cause. Just a bad guess from Xcode

    0 讨论(0)
  • 2021-02-12 22:45

    I've just spent 45 minutes with this problem, only in my case the solution was stupid and the problem slightly different.

    • I had a file called Playlist.txt in my resources directory. It was loading just fine.
    • The file was modified at one point, from within XCode.
    • The file stopped loading properly, with the same error as above. However, it had never been moved nor had its encoding type been changed.
    • I did a command-I (Get Info) on the file in the XCode directory, it told me it was UTF-8 (as expected).
    • I tried the "usedEncoding" way of reading files, no dice. Same error, encoding was return null.
    • Finally, I erased the file from XCode, dragged it in again, and did a Clean All. That fixed the problem.

    This is not the first time that XCode magically caching things (incorrectly) has caused me hours and hours of wasted time. If you have an error like this which doesn't make sense, try removing and replacing files and cleaning all targets.

    0 讨论(0)
  • 2021-02-12 22:51

    The most likely reason that +stringWithContentsOfFile:encoding:error: would fail in this case would be if you provided the wrong encoding. Are you sure that your @"eula" file is UTF8 encoded?

    If you're unsure about the encoding of the file, you could always try +stringWithContentsOfFile:usedEncoding:error: instead and see if it works and what encoding it comes up with.

    0 讨论(0)
  • 2021-02-12 22:52

    The error is almost certainly that your file is not in UTF-8, but you're right, that does sound like a bug in the error report.

    Open the eula file up with BBEdit (or the free TextWrangler) and see what encoding it uses. Change the encoding to UTF-8 and save it. Diff the two files to see what differences have appeared. Replace the original file with the new one (fixing any glitches).

    If that resolves the problem, then use the Apple Bug Reporter to report the bug in the error report.

    0 讨论(0)
提交回复
热议问题