#objective-c #cocoa-touch #parsing #csv #nsstring
#objective-c #cocoa-touch #синтаксический анализ #csv #nsstring
Вопрос:
В моем пакете есть csv-файл, который мне нужно разобрать в NSArray. Проблема в том, что когда я инициализирую NSString с содержимым файла (файл находится в моем пакете), он возвращает nil. Однако, если я изменю содержимое файла на что-нибудь другое (случайное), это сработает. Возможно ли, что в файле есть какая-то строка / символ, который может мешать инициализации?
Это всего лишь простой CSV-файл с 2 столбцами, числом, запятой, некоторым текстом и » n».
Спасибо.
Ответ №1:
CSV => NSArray?
https://github.com/davedelong/CHCSVParser
* отказ от ответственности: я написал это.
Работает для меня:
NSStringEncoding usedEncoding = 0;
NSError *csvError = nil;
NSString *raw = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://pastebin.com/raw.php?i=RXPPwpvy"] usedEncoding:amp;usedEncoding error:amp;csvError];
NSLog(@"raw: %@", raw);
NSLog(@"%@", [NSArray arrayWithContentsOfCSVString:raw encoding:usedEncoding error:amp;csvError]);
Комментарии:
1. Это именно то, что я пробовал, прежде чем решил разобрать это самостоятельно. Я всегда использую этот анализатор, и он работает отлично, но это первый раз, когда он не работает. Он просто возвращает nil.. Немного не по теме, но только что прочитал, что вы написали это, и я хочу поблагодарить вас за эти классы, поскольку они мне очень помогли.
2. @user635064 можешь опубликовать файл? Если анализатор не работает, я хотел бы знать, почему.
3. Привет, вот оно: pastebin.com/RXPPwpvy Просто скопируйте вставку из необработанных данных вставки внизу. Спасибо за вашу помощь.
4. Привет, спасибо за ответ. Кажется, я знаю, что происходит. Когда я экспортирую его из Excel в формат .csv, это не работает. Но, если я скопирую содержимое файла в textedit, а затем сохраню его, тогда это сработает. Вы знаете, в чем может быть проблема? Еще раз спасибо.
5. @user635064 вероятно, это проблема с кодировкой. Попробуйте открыть файл в чем-то вроде TextWrangler, чтобы посмотреть, в какой кодировке он сохраняет файл, а затем использовать эту кодировку при чтении файла.