0

在我的 iPhone 应用程序中,我需要从数组中获取一些值,如下所示:

string1 = [array objectAtIndex:0];
string2 = [array objectAtIndex:1];

但是,有时,根据用户数据,该对象不会存在于数组中。当调用这样的行并且对象不存在时,我的应用程序自然会崩溃并出现越界错误。

那么我该如何解决呢?如何检测该对象何时不存在并相应地设置字符串?

例如,如果索引处的对象确实存在,则 string = ...

否则,如果索引处不存在对象,则字符串 = ...

4

2 回答 2

4

NSArray 有一个 count 属性,您可以使用它来确定索引是否有效。

if(array.count < index)
{ string1 = [array objectAtIndex:index]; } 
else
{ string1 = @"Not found"; }

如果您希望这是通用功能,您可以使用类别将其作为方法添加到 NSArray:

@interface NSArray()
- (NSString*) objectAtIndexWithCheck:(int) index;
@end

@implementation NSArray
-(NSString*) objectAtIndexWithCheck:(int) index
{
   if(self.count < index)
   { return [self objectAtIndex:index]; }
   else
   { return @"Not found"; }
}
@end
于 2012-09-19T01:17:51.667 回答
0

您的意思是没有具有该索引号的数组元素,或者该位置的对象已被收集?如果是前者,那么只需将您的数组索引值与array.count. 您提到的“越界错误”表明这是这种情况。

但是,如果您的意思是后一种情况,那么请修复您的错误——除非您遇到严重的堆管理错误,否则 NSArray 中的条目绝不应该是无效地址,并且没有可靠的方法可以通过异常处理从这种情况中恢复。

于 2012-09-19T01:24:10.763 回答