2010-07-23 4 views
2

Я пытаюсь создать NSArray строк из текстового файла.Создание NSArray объектов из текстового файла

Вот код, который я использую:

Но это, кажется, дает некоторые дополнительные объекты без текста, я должен это исправить. Просто если это помогает этому текстовый файл я использую его:

/nFeet размеры в Англии измеряются в Barleycorns ./n

Слон смеяться и плакать./n

Брюки убивают 12 человек в год./n

Лев, который ревет в логотипе MGM, является под названием Volney./n

Жена султана называется Султана./n

Настоящее имя Брэда Питта - Уильям./n

Существует более 5000 божьих коровок видов./n

Усадьбы США в 100 раз больше опасны, чем британские. В 1996 году 43 687 американцев были госпитализированы после унитазов./n

Статуя свободы изготовлена ​​из бронзы и нанесена американцам Францией./n

Ирландский дал волынки шотландцам в шутку. Он вернулся!/n

Ваша нога имеет ту же длину, что и расстояние между вашим запястьем и локтем. /n

Крыса может плавать без остановок в течение 72 часов. /п

Вероятность быть убитым в автомобиле аварии в Великобритании такие же как погиб в результате несчастного случая внутри вашего собственного дома : 1 в 10000./n

В 1996 году 12 человек в Великобритании были поспешили в больницу после скрепки инцидент./n

+1

На всякий случай, разрыв строки - это \ n, not/n ... Но, возможно, вы записали/n в свой файл ... – Macmade

ответ

4

Вот текст файла:

Feet sizes in England are measured in Barleycorns. 
Elephants laugh and cry. 
Trousers kill 12 people a year. 
The lion that roars in the MGM logo is called Volney. 
The wife of a Sultan is called a Sultana. 
Brad Pitt's real name is William. 
There are more than 5000 ladybird species. 
US lavatories are 100 times more dangerous than British ones. In 1996, 43,687 Americans were hospitalized after toilet disasters. 
The statue of liberty is made of bronze and was given to the Americans by the French. 
The Irish gave bagpipes to the Scots as a joke. It back fired! 
Your foot is the same length as the distance between your wrist and elbow. 
A rat can swim non-stop for 72 hours. 
The odds of being killed in a car crash in Britain are the same as being killed in an accident inside your own home: 1 in 10,000. 
In 1996, 12 people in Britain were rushed to hospital after a paperclip incident. 

Вот код:

NSString *title = @"facts"; 
NSString *type = @"txt"; 
NSString *separation = @"\n"; 
NSString *fileText = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:title ofType:type] encoding:NSMacOSRomanStringEncoding error:nil]; 
NSMutableArray *facts = [[NSMutableArray alloc]initWithArray:[fileText componentsSeparatedByString:separation]]; 

NSLog(@"%@", [facts description]); 

Вот выходной массив:

(
"Feet sizes in England are measured in Barleycorns. ", 
"Elephants laugh and cry. ", 
"Trousers kill 12 people a year. ", 
"The lion that roars in the MGM logo is called Volney. ", 
"The wife of a Sultan is called a Sultana. ", 
"Brad Pitt's real name is William. ", 
"There are more than 5000 ladybird species. ", 
"US lavatories are 100 times more dangerous than British ones. In 1996, 43,687 Americans were hospitalized after toilet disasters. ", 
"The statue of liberty is made of bronze and was given to the Americans by the French. ", 
"The Irish gave bagpipes to the Scots as a joke. It back fired! ", 
"Your foot is the same length as the distance between your wrist and elbow. ", 
"A rat can swim non-stop for 72 hours. ", 
"The odds of being killed in a car crash in Britain are the same as being killed in an accident inside your own home: 1 in 10,000. ", 
"In 1996, 12 people in Britain were rushed to hospital after a paperclip incident. " 
) 

Существовали 14 линий текста на входе f который вы указали. В начале файла была добавлена ​​одна новая строка. Это объясняет один из дополнительных счетчиков. Я могу только предположить, что в фактическом файле появилась новая строка. Может быть, в конце?

Было несколько вещей, которые я сделал для выполнения этой работы. я изменил @"/n" на @"\n" Переходят nil к error: не NULL И я вошел описание NSMutableArray, который я выбрал для инициализации на втором этапе для удобства чтения. Я также избавился от дополнительной строки в верхней части файла и убедился, что в конце не было ни одного.

1

Как насчет регистрации массива на консоли (или его печати с использованием «po factArray»)? Возможно, дополнительные объекты могут быть пустыми линиями? Если это так, вы можете просто удалить все объекты (строки), которые являютсяEqualToString: @ "" ...

+0

Когда я регистрирую массив, используя 'for (текст NSString * в self.facts) '' '' 'NSLog'' (@"% @ ",' 'text);' '}' 'он отображает только 14 элементов, когда подсчет показывает 16. – Joshua

+0

Опубликовать его. Добавьте результат к своему вопросу, чтобы мы могли видеть, что вы видите. –

+0

Вот что я вижу. http://cl.ly/5f6757054624b3406fb6 – Joshua

Смежные вопросы