我以5件套的形式收到对象人的数据。让我们说出姓名,年龄,性别,电子邮件,电话号码。我做了以下操作,将字符串添加到NSobject:
DataObject *data=[DataObject new];
data.name=@"name";
data.age=@"age";
data.email=@"email";
//here i want to check for duplicates
[personArray addObject:data];
但是,我想检查personArray是否有重复的NSObject。
我尝试了这个,但它没有用:
if(![personArray containsObject:data]){
//add data
}
编辑:实际上,这就是我想要做的事情:
我正在获取JSON repsonse,我将属性添加到数组中。在我以前只获得一个属性之前,在这种情况下,我做了以下操作以消除重复:
[JSON[@"person"] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (![obj[@"email"] isEqual:[NSNull null]] && ![personArray containsObject:obj[@"email"]] ) {
[personArray addObject:obj[@"email"]];
}
}];
后来我为person获得了5个属性,所以我想的不是将它们全部添加到数组中,而是使用NSObject类将属性绑定在一起并将一个人添加到数组中。
[JSON[@"person"] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (![obj[@"email"] isEqual:[NSNull null]] && ![personArray containsObject:obj[@"email"]] ) { //how to check for the duplicates here?
DataObject *data=[DataObject new];
data.name=@"name";
data.age=@"age";
data.email=@"email";
[personArray addObject:data];
}
}];
答案 0 :(得分:1)
您需要为isEqual
类实现DataObject
。然后[personArray containsObject:data]
应该有用。
详见:
答案 1 :(得分:1)
如果你这样做:
DataObject *data = [DataObject new];
您刚刚创建了data
的新实例。 personArray
内的其他任何对象都不能等于该新实例。
我假设您实际上正在尝试检查data
对象是否包含与data
中其他personArray
对象相同的属性。有很多方法可以做到这一点(我喜欢Zaph的答案,很干净),但为了简单起见......
DataObject *data=[DataObject new];
data.name=@"name";
data.age=@"age";
data.email=@"email";
BOOL contains = NO;
for (DataObject *object in personArray) {
if ([object.name isEqualToString:data.name] && [object.age isEqualToString:data.age] && [object.email isEqualToString:data.email]) {
contains = YES;
break;
}
}
if (!contains) {
[personArray addObject:data];
}