【发布时间】:2010-04-10 16:13:52
【问题描述】:
我有一个大约 2000 行的数据源,如下所示:
6712,Anaktuvuk Pass Airport,Anaktuvuk Pass,United States,AKP,PAKP,68.1336,-151.743,2103,-9,A
我感兴趣的是这个字符串的第 6 部分,所以我想把它变成一个数组,然后我想检查第 6 部分 [5] 是否出现了那个字符串“PAKP”
代码:
NSBundle *bundle = [NSBundle mainBundle];
NSString *airportsPath = [bundle pathForResource:@"airports" ofType:@"dat"];
NSData *data = [NSData dataWithContentsOfFile:airportsPath];
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
NSArray *dataArray = [dataString componentsSeparatedByString:@"\n"];
NSRange locationOfAirport;
NSString *workingString = [[NSString alloc]initWithFormat:@""];
NSString *searchedAirport = [[NSString alloc]initWithFormat:@""];
NSString *airportData = [[NSString alloc]initWithFormat:@""];
int d;
for (d=0; d < [dataArray count]; d=d+1) {
workingString = [dataArray objectAtIndex:d];
testTextBox = workingString; //works correctly
NSArray *workingArray = [workingString componentsSeparatedByString:@","];
testTextBox2 = [workingArray objectAtIndex: 0]; //correctly displays the first section "6712"
testTextBox3 = [workingArray objectAtIndex:1] //throws exception index beyond bounds
locationOfAirport = [[workingArray objectAtIndex:5] rangeOfString:@"PAKP"];
}
问题是,当 workingArray 填充时,它只填充一个对象(字符串的第一个组件是“6712”。如果我让它显示 workingString,它会正确显示整个字符串,但对于某些原因,它没有正确使用逗号制作数组。
我在不使用数据文件的情况下尝试了它,它工作正常,所以问题来自我如何导入数据。
想法?
【问题讨论】:
-
奇怪的问题。我知道这与您的问题无关,字节,您为什么要为 workingString、searchedAirport 和 airportData 分配内存?
-
也不是问题,但 testTextBox3 行末尾缺少分号。您确定这是正在运行的确切代码吗?如果你把 NSLog(@"%@", workingArray);设置workingArray后,显示什么?
-
Pablo - 一旦我解决了这个问题,这些将用于其他用途。仙人掌- testTextBox3 只是我帖子中的一个错字。这是记录的内容:2010-04-10 11:28:34.675 Companion[16752:207] ( 6712, "Anaktuvuk Pass Airport", "Anaktuvuk Pass", "United States", AKP, PAKP, "68.1336", "- 151.743", 2103, "-9", "", A)
-
已修复 - 大约有 5 个随机“\”导致了该问题。感谢 Pablo 引导我完成这项工作
标签: iphone objective-c arrays nsdata