iOS:删除 For 循环中 NSMutableArray 中的 NSArray

标签 ios objective-c

这是一个非常简单的概念,但我没有得到我想要的结果。我有一个填充有 NSArray 的 NSMutableArray,我想遍历该 NSMutableArray 并根据键值对删除某些 NSArray。我的结果有许多我应该删除的 NSArray,我认为这与 NSMutableArray 的计数和我在 For 循环中声明的 int 有关。

这是我的代码:(restArray 是 NSMutableArray)

for (int i=0; i<restArray.count; i++) {
    NSArray *array = restArray[i];
    if ([[array valueForKey:@"restaurant_status"] isEqualToString:@"0"]) {
        [restArray removeObjectAtIndex:i];
    }
}

有人知道我在这里做错了什么吗?

最佳答案

不建议修改当前正在迭代的数组。

让我们创建一个 tmp 数组,然后反转您的逻辑。

NSMutableArray * tmpArray = [NSMutableArray array];
for (int i=0; i<restArray.count; i++) {
    NSArray *array = restArray[i];
    if (![[array valueForKey:@"restaurant_status"] isEqualToString:@"0"] {
        [tmpArray addObject:array];
    }
}

因此,在迭代结束时,您应该以拥有所需数组的 tmpArray 结束。

关于iOS:删除 For 循环中 NSMutableArray 中的 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33218543/

相关文章:

ios - 与所有可能的实体有一个共享按钮 IoS

iphone - YouTube ios 提要缩略图

iphone - 发布 C 库(带 ARC)

iphone - 如何使用 iOS GPUImage 生成直方图?

ios - 'UIWindow' 没有可见的 @interface 声明选择器 'recursiveDescription'

iphone - three20 和 iOS 6 不工作

iphone - IOS中keychainWrapper中存放NSArray或NSDictionary

ios - NSDate 转换 NSDateComponents 问题

ios - UIWebView内部ScrollView

ios - Apple Watch 的 url 图片