Obj-C - 无法访问 NSArray 中的值?

Obj-C - Can't access values in NSArray?

我有一个显示字符串的 textView:255,34,7,4

我正在尝试使用以下代码从我的 textView 中提取字符串,并将每个数字分隔到一个数组中:

        NSArray *array = [self.textview.text componentsSeparatedByString:@","];
        NSString *comp1 = array[0];
        NSString *comp2 = array[1];
        NSString *comp3 = array[2];

这有效,并且以下内容返回到我的数组:

> 2020-07-11 15:21:58.110560-0700[10116:2311809] In the array you will
> find (
>     255,
>     34,
>     7,
>     4 )

但是我无法使用 array[1] 和 array[2] 访问第二个和第三个值?我的应用因以下错误而崩溃:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

为什么会这样?

因为您尝试访问的那一刻预期的对象并不存在。 在访问运行时可能不存在的索引之前询问数组中可用索引的数量要安全得多。

NSArray *splitarray = [self.textview.text componentsSeparatedByString:@","];

NSLog(@"amount of indexes %lu", splitarray.count);

for (NSString *idxObject in splitarray) {
    NSLog(@"content @%",idxObject);
}

for (NSUInteger i=0; i<splitarray.count; i++) {
    NSLog(@"content @%",splitarray[i]);
}

NSArray 和许多其他索引数据类型不检查索引是否存在以加快访问速度,并且它们也不会构造为 return nil 以防索引不存在。