当我运行下面的代码时,我得到了
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]
据我所知,在循环中的某个点上没有到达数组的索引。 如何处理?
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *t = [NSTimeZone knownTimeZoneNames];
for(id x in t)
{
NSArray *tmpArray = [x componentsSeparatedByString:@"/"];
NSLog(@"%@", [tmpArray objectAtIndex:1]);
}
[pool drain];
return 0;
}
答案 0 :(得分:4)
并非所有时区名称都包含斜杠。例如,UTC
时区名称不包含斜杠。所以tmpArray
可能只包含一个字符串,索引为0。
也许这会做你想要的:
NSLog(@"%@", [tmpArray lastObject]);
答案 1 :(得分:1)
您应首先检查tmpArray
的大小:
NSArray *tmpArray = [x componentsSeparatedByString:@"/"];
if ([tmpArray count] > 1)
NSLog(@"%@", [tmpArray objectAtIndex:1]);
答案 2 :(得分:0)
您可能想要在访问索引1之前检查tmpArray的大小