OGeek|极客世界-中国程序员成长平台

标题: iOS:枚举时对象相等 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:24
标题: iOS:枚举时对象相等

假设我有一个 NSArray,每个项目都是一个 NSDictionary,其中包含三个键 keyA、keyB 和 keyC - 每个都引用未知类型的对象 ( id).

如果我想编写一个方法,用这三个键找到给定元素,即

-(NSDictionary *) itemThatContainsKeysid)objectA andid)objectB andid)objectC

如果通过 if([i objectForKeykeyA) isEqualTobjectA]) 等简单地枚举和测试对象相等性,我会遇到麻烦吗?我将传入在字典初始化中设置的实际对象 - 即不是具有相同值但位置不同的字符串。

这是不好的做法吗? 有没有更好的方法可以在不创建数据库的情况下做到这一点?



Best Answer-推荐答案


你可以重写 isEqual 来为你的类型规定相等的概念。与其他语言相同的规则:

这将确保 NSSet 等类中的可预测行为,这些类使用哈希来提高性能,在发生冲突时回退到 equals。

正如 Jason Whitehorn 所指出的,Objective-C 也有提供另一个 isEqualToMyType 方法以方便使用的约定。

AppCode、EqualsBuilder、样板代码

如果有类似 Apache 的 'EqualsBuilder' 类的东西就好了,但与此同时 AppCode为您实现这些方法做得很好。

关于iOS:枚举时对象相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210232/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4