我正在测试排序算法,我有不同的文本文件,其中包含如下所示的值。
2345
6789
4567
我尝试过这样的事情。
NSString *title = @"test";
NSString *type = @"rtf";
NSMutableArray *test4 = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:title ofType:type]];
但结果是(null)数组。
我知道在某些时候我必须将这些值转换为NSNumber
个对象,但是我对Objective-C有点遗失。
有人可以给我一些建议吗?
答案 0 :(得分: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。
答案 1 :(得分: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++;
}