NSString stringWithContentsOfFile не работает с кодом ошибки
Я пытаюсь загрузить файл в строку. Вот код, который я использую:
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. Однако, если я меняю содержимое файлов, но сохраняю имена одинаковыми, другой файл не удается доказать, что нет ничего плохого в имени файла, это как-то связано с контентом.
О файле достаточно простой HTML, но файл eula - это огромный беспорядок, экспортированный из Word юридическим отделом.
Кто-нибудь знает что-либо внутри HTML файла, который может вызвать эту ошибку?
Большое спасибо,
Сэм
Ответы
Ответ 1
Ошибка почти наверняка заключается в том, что ваш файл не находится в UTF-8, но вы правы, что звучит как ошибка в отчете об ошибке.
Откройте файл eula с помощью BBEdit (или свободного TextWrangler) и посмотрите, какую кодировку он использует. Измените кодировку на UTF-8 и сохраните ее. Разделите два файла, чтобы увидеть, какие отличия появились. Замените исходный файл на новый (исправляя любые сбои).
Если это решает проблему, используйте Apple Bug Reporter, чтобы сообщить об ошибке в отчете об ошибке.
Ответ 2
Я только что провел 45 минут с этой проблемой, только в моем случае решение было глупо, и проблема немного отличалась.
- У меня был файл с именем Playlist.txt в моем каталоге ресурсов. Это было очень просто.
- Файл был изменен в одной точке из XCode.
- Файл перестает правильно загружаться с той же ошибкой, что и выше. Однако он никогда не перемещался и не изменялся его тип кодирования.
- Я сделал команду-I (Get Info) в файле в каталоге XCode, он сказал мне, что это UTF-8 (как и ожидалось).
- Я попробовал "usedEncoding" способ чтения файлов, без кубиков. Такая же ошибка, кодировка была возвращена null.
- Наконец, я удалил файл из XCode, снова перетащил его и выполнил Очистить все. Это устранило проблему.
Это не первый случай, когда XCode магически кэширует вещи (неправильно), вызвало у меня часы и часы впустую. Если у вас есть такая ошибка, которая не имеет смысла, попробуйте удалить и заменить файлы и очистить все цели.
Ответ 3
У меня была такая же ошибка с вами, используйте имя файла с
[[NSBundle mainBundle] pathForResource: @ "pageList" ofType: @ "txt" ]] удачи!
Ответ 4
Наиболее вероятной причиной отказа +stringWithContentsOfFile:encoding:error:
в этом случае было бы, если вы указали неверную кодировку. Вы уверены, что ваш файл @"eula"
закодирован в UTF8?
Если вы не уверены в кодировке файла, вы всегда можете попробовать +stringWithContentsOfFile:usedEncoding:error:
и посмотреть, работает ли он и что это кодирование.
Ответ 5
Не знаю, была ли это ваша проблема, но у меня просто была аналогичная вещь (stringWithContentsOfFile, нет JSON), и проблема заключалась в том, что в файле были линии линии CRLF (окна) и Western-whatever-it-called кодирование. Я использовал SubEthaEdit для преобразования в LF и UTF-8, и все работает нормально.
Ответ 6
Я столкнулся с той же ошибкой.
Когда я немного поиграл, оказалось, что я не включал файл в ресурсы пакета для копирования целевого объекта.
Я сделал это, и все получилось отлично.
Но, надо сказать, ошибка настолько вводит в заблуждение по такой простой причине. Просто плохое предположение от Xcode