【发布时间】:2015-12-20 02:41:34
【问题描述】:
我有两个array,分别称为array1 和array2。我想从array1 中删除每个对象,即"nameId" 键的值可以在两个数组中找到。实际上我正在for loop 中尝试它,但这没有任何意义。它不会崩溃,它只是简单地调用else statement 中的日志,我不明白为什么会发生这种情况。也许有人可以告诉我正确的解决方案。
NSMutableArray *newArray = [self.array1 mutableCopy];
for (PFObject * object in newArray) {
PFObject *placeholderObject = object;
for (PFObject *object2 in self.array2) {
if ([placeholderObject[@"nameId"] isEqualToString:object2[@"nameId"]]) {
[self.array1 removeObject:object];
NSLog (@"EXISTING OBJECT FOUND %@", object);
} else {
NSLog(@"UNIQUE OBJECT FOUND %@", idO[@"hirCime"]);
}
}
}
【问题讨论】:
-
如果
array1和array2是不可变数组,你不应该做“[newArray removeObject:object]”吗?另外,您是否通过 Xcode 调试器单步执行此操作以查看是否存在 placeHolderObject 的“nameId”等于 object2 中的内容的情况? -
@MichaelDautermann 从快速枚举循环体中的数组中删除项目不是一个好主意——它可能会触发“NSArray 在枚举时发生突变”异常。不过,OP 绝对应该检查
if声明。 -
是的,你是对的,从这样的数组中删除项目。在从可变数组中删除项目的情况下,我通常使用reverse enumeration。
标签: ios objective-c nsmutablearray