我有一个NSMutableArray:
NSMutableArray *temp = //get list from somewhere.
现在有一个方法objectAtIndex,它返回指定索引处的对象。
我想要做的是,我想首先检查指定索引处的对象是否存在。如果它存在而不是我想要获取该对象。类似的东西:
if ([temp objectAtIndex:2] != nil)
{
//fetch the object
}
但是我在if语句中得到异常,说索引超出了绑定。
请有人告诉我如何实现这一目标。
答案 0 :(得分:13)
你不能在NSArray中拥有'空'插槽。如果[myArray count] == 2,即数组有两个元素,那么你肯定知道在索引0处有一个对象,在索引1处有一个对象。总是这样。
答案 1 :(得分:4)
首先使用计数方法检查长度。
if ([temp count] > indexIWantToFetch)
id object = [temp objectAtIndex:indexIWantToFetch];
答案 2 :(得分:2)
初始化时,请执行以下操作:
NSMutableArray *YourObjectArray = [[NSMutableArray alloc] init];
for(int index = 0; index < desiredLength; index++)
{
[YourObjectArray addObject:[NSNull null]];
}
然后,当您想要添加但检查它是否已存在时,请执行以下操作:
YourObject *object = [YourObjectArray objectAtIndex:index];
if ((NSNull *) object == [NSNull null])
{
/// TODO get your object here..
[YourObjectArray replaceObjectAtIndex:index withObject:object];
}
答案 3 :(得分:0)
只需检查索引是&gt; = 0和&lt;计数
返回当前接收器中的对象数。
- (NSUInteger)count
int arrayEntryCount = [temp count];
答案 4 :(得分:-2)
首先,检查数组的长度 -
NSMutableArray * temp = //从某处获取列表。
现在检查 - if(临时长度) {
您的objectclass * obj = [temp objectAtIndex:indexnumber];
// indexnumber是0,1,2,3或任何人......
}