2013-07-16 2 views
1

Я тестирую алгоритм сортировки, и у меня разные текстовые файлы, содержащие следующие значения.Как создать массив из NSNumbers из текстового файла?

2345 

6789 

4567 

Я пробовал что-то вроде этого.

NSString *title = @"test"; 
NSString *type = @"rtf"; 

NSMutableArray *test4 = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:title ofType:type]]; 

, но результатом является (нулевой) массив.

Я понимаю, что в какой-то момент мне нужно преобразовать эти значения в объекты NSNumber, но я немного потерялся с Objective-C.

Может ли кто-нибудь дать мне совет?

+0

Вы NSLog массив, чтобы узнать, что у вас есть? –

+0

Я получил (нулевой) массив – ragnarok

+0

(Имейте в виду, что arrayWithContentsOfFile вряд ли имеет смысл RTF-файла, если RTF означает Rich Text Format. ArrayWithContentsOfFile предназначен только для чтения файлов списка свойств Apple.) –

ответ

2

Вы можете использовать NSScanner:

NSError *error = nil; 
NSString *filename = [[NSBundle mainBundle] pathForResource:title ofType:type]; 
NSString *fileContents = [NSString stringWithContentsOfFile:filename encoding:NSUTF8StringEncoding error:&error]; 
if (error) NSLog(@"%s: stringWithContentsOfFile error: %@", __FUNCTION__, error); 
NSScanner *scanner = [NSScanner scannerWithString:fileContents]; 

NSMutableArray *array = [NSMutableArray array]; 
NSInteger i; 
while ([scanner scanInt:&i]) { 
    [array addObject:@(i)]; 
} 

Для обсуждения сканеров, чтение файлов в строки и общее программирование строки см String Programming Guide.

0

Если вы измените расширение на .txt (конечно, сохраните его из обычного текста), вы можете их прочитать.

Я написал код для случая, когда вы кладете номер один под другим

1234 

2344 

2345 

Вот код, я использую.

NSString *title = @"test"; 
NSString *type = @"txt"; 

NSString *file = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:title ofType:type] encoding:NSUTF8StringEncoding error:nil]; 
NSArray *numberList = [[file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]componentsSeparatedByString:@"\n"]; 

NSMutableArray *test4 = [[NSMutableArray alloc] init]; 
int lastItem = 0; 

for (NSString *listItem in numberList) 
{ 
    //this is added because you most surely have a \n as last item and it will convert to 0 
    if(lastItem < listItem.count - 1) 
    [test4 addObject:[NSNumber numberWithInt:listItem.integerValue]]; 
    lastItem++; 
} 

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

  • Нет связанных вопросов^_^