Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 比较不同数组中的对象属性(objective-c)_Iphone_Objective C_Arrays_Compare - Fatal编程技术网

Iphone 比较不同数组中的对象属性(objective-c)

Iphone 比较不同数组中的对象属性(objective-c),iphone,objective-c,arrays,compare,Iphone,Objective C,Arrays,Compare,我有一个可以按天查看的当前动物对象数组-例如,周一将返回周一可用的所有动物,等等 我还有一系列保存的动物对象 如何确保保存的动物不会显示在当前动物列表中 比如,如果currentAnimal.name与savedAnimal.name相等 我需要两个数组中的对象,所以比较.Name属性,我想,重要的是重写等号和哈希,如果您认为对象是相等的,那么对名称进行比较。< /P> - (BOOL)isEqual:(id)other { if (other == self) retu

我有一个可以按天查看的当前动物对象数组-例如,周一将返回周一可用的所有动物,等等

我还有一系列保存的动物对象

如何确保保存的动物不会显示在当前动物列表中

比如,如果currentAnimal.name与savedAnimal.name相等


我需要两个数组中的对象,所以比较.Name属性,我想,

重要的是重写等号和哈希,如果您认为对象是相等的,那么对名称进行比较。< /P>

- (BOOL)isEqual:(id)other {
    if (other == self)
        return YES;
    if (!other || ![other isKindOfClass:[self class]])
        return NO;
    return [((MyObject *)other).name isEqualToString:name];
}


重写是等值和哈希,如果你认为使对象“相等”,则对名称进行比较。

- (BOOL)isEqual:(id)other {
    if (other == self)
        return YES;
    if (!other || ![other isKindOfClass:[self class]])
        return NO;
    return [((MyObject *)other).name isEqualToString:name];
}


若您希望对象严格相等或方法属于类,那个么应该使用isEqual方法。
看看

若你们想让对象严格相等,或者方法是类的话,你们应该使用isEqual方法。
看看

谢谢你的回答,但我一点也不明白,我甚至不知道哈希是什么。什么是“其他”和什么是“自我”,数组在哪里?哈希和isEqual是Objective-c用来测试对象相等性的默认方法。通常,这些实例都是相等的,也就是说,如果对象是同一个实例,但是您可以说,您可能有两个不同的实例,但是如果名称相同,则认为它们是相等的。通过重写这些方法,可以重新定义对象相等的含义。运行时将自动调用这些方法,因此您只需实现它们。。。另一个传递给方法,您所做的就是对名称进行相等性检查。好的,谢谢,我现在更了解了。我想我现在遇到的问题是将对象的引用从保存的数组中获取到这个方法中。希望这能奏效!!!如果您实现了这些方法,那么您可以执行[myobject1 isEqual:myobject2]来查看它们是否相等,或者(![myarray containsObject:myobject]){[myarray addObject:myobject];}谢谢您的回答,但我根本不明白这一点,我甚至不知道哈希是什么。什么是“其他”和什么是“自我”,数组在哪里?哈希和isEqual是Objective-c用来测试对象相等性的默认方法。通常,这些实例都是相等的,也就是说,如果对象是同一个实例,但是您可以说,您可能有两个不同的实例,但是如果名称相同,则认为它们是相等的。通过重写这些方法,可以重新定义对象相等的含义。运行时将自动调用这些方法,因此您只需实现它们。。。另一个传递给方法,您所做的就是对名称进行相等性检查。好的,谢谢,我现在更了解了。我想我现在遇到的问题是将对象的引用从保存的数组中获取到这个方法中。希望这能奏效!!!如果您实现这些方法,那么您可以执行[myobject 1 isEqual:myobject 2]来查看它们是否相等,或者(![myarray containsObject:myobject]){[myarray addObject:myobject];}我不希望严格相等,是吗?我只希望其中一个对象属性匹配,而不是所有的。@Simon给你你需要的确切答案。我不希望严格地等于,是吗?我只想让其中一个对象属性匹配,而不是全部匹配。@Simon给你你需要的确切答案。