我正在尝试从两个数组中获取数据,并从第三个数组获取该数据的数据。一切正常,直到第二次迭代。 tagsIdarray和tagsArray每个都有3个数组,每个数组都有各自的计数(基本上它是数组数组)。 pretagarray有各自的计数。
if(tagsArray!=(id)[NSNull null])
{
for(int i=0;i<[tagsArray count];i++)
{
for(int j=0;j<[[tagIdsArray objectAtIndex:i] count];j++){
if([[tagIdsArray objectAtIndex:i]objectAtIndex:j]==[preTagArray objectAtIndex:j])
{
selectedTagCompleteArray = [[tagsArray objectAtIndex:i]objectAtIndex:j];
}
}
}
}
示例tagsArray objectAtIndex:i count = 4,5,20 tagsIdsArray objectAtIndex:i count = 4,10,8 pretagArryCount = 15
答案 0 :(得分:0)
这是你要找的?
if(tagsArray!=(id)[NSNull null])
{
for(int i=0;i<[tagsArray count];i++)
{
NSArray *tagsArrayElement = [tagIdsArray objectAtIndex:i];
for(int j=0;j<[tagsArrayElement count];j++){
id tagElement = [tagsArrayElement objectAtIndex:j];
for(int k=0;k<[preTagArray count];k++){
id preTagElement = [preTagArray objectAtIndex:k];
if(tagElement==preTagElement)
{
selectedTagCompleteArray = tagElement;
}
}
}
}
}
答案 1 :(得分:0)
很难理解您要使用代码完成的任务。您收到的错误是因为您尝试访问不存在的NSArray
上的索引。如果没有准确了解您希望实现的结果,很难提供实现,但是避免崩溃的一种方法是在使用{{1} 之前检查objectAtIndex:
s 的计数。 }。像这样:
if ([tagsIdsArray count] == [preTagArray count]) {
//the arrays match and you can safely iterate
}
else {
//the array sizes do not match and will crash if you iterate
}
如果NSArray
计数不相等,那么迭代它们执行操作可能没有意义。我会想一想为什么数组不匹配。很明显,你的一个数组只有2个值,因为它似乎通过索引0和1.你可以尝试NSLog()
每个数组的数组计数(或记录objectAtIndex:
)你的循环和这可能会成为罪魁祸首。