首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NSSet或NSCountedSet中检查现有项目?

如何在NSSet或NSCountedSet中检查现有项目?
EN

Stack Overflow用户
提问于 2009-05-23 02:59:35
回答 2查看 914关注 0票数 0

我目前正在将模型对象填充到NSSet中(也许我应该使用NSCountedSet)。模型应该是唯一的。我所做的是从web服务中提取它们,然后在客户端实例化它们,并将它们添加到一个集合中。

我的问题是:有时候我只会拉出一款车型并将其添加到集合中,例如,我有一份法拉利的库存,所以我会要求我的服务器将我拉入一辆特定的法拉利,因为有个人从库存中点击了该法拉利的详细视图。个人的法拉利细节视图将列出所有不同的油漆可用于该型号。因此,一旦用户进入这个法拉利视图,我将向服务器请求特定法拉利车型可用的所有颜料。

接下来,用户退出,然后转到视图控制器,该控制器询问我为每辆车提供的所有油漆颜色。我已经有一堆法拉利的油漆了。现在我从服务器上请求所有的颜料。在不重复资源的情况下,将现有的油漆与所有油漆聚合在一起的最好方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2009-05-23 04:19:14

您需要的是一种从服务器唯一标识每个对象的方法。在数据库中,一个对象(部分或整个)可以表示为一行,而rowid通常是一个单调递增的整数(尽管您的数据源可以使用其他东西)。在任何情况下,请将此唯一id存储在您创建的每个对象中,并在创建新对象之前检查是否存在具有该id的对象。如果对象已经存在,则返回现有对象,如果不存在,则创建一个新对象,然后将其存储在缓存中。使用整数作为ids效果很好,因为您可以使用NSMapTable作为缓存,以rowid作为键,值是对象指针。

票数 2
EN

Stack Overflow用户

发布于 2009-05-23 05:06:39

在你的应用程序中维护一个NSArray*,它根据你的一些功能的hash function来存储NSString*对象:

代码语言:javascript
复制
hashValue = hash(color + horsepower + leatherSeating + whatever...)

例如,您可以采用排序字符串(example code)的SHA1散列。

获取您从web服务中获得的特性,并使用相同的函数从它们生成散列值。

使用-containsObject:在应用程序的哈希表中搜索web服务值。

如果返回YES,则执行X,否则执行Y。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/900749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档