我目前正在将模型对象填充到NSSet中(也许我应该使用NSCountedSet)。模型应该是唯一的。我所做的是从web服务中提取它们,然后在客户端实例化它们,并将它们添加到一个集合中。
我的问题是:有时候我只会拉出一款车型并将其添加到集合中,例如,我有一份法拉利的库存,所以我会要求我的服务器将我拉入一辆特定的法拉利,因为有个人从库存中点击了该法拉利的详细视图。个人的法拉利细节视图将列出所有不同的油漆可用于该型号。因此,一旦用户进入这个法拉利视图,我将向服务器请求特定法拉利车型可用的所有颜料。
接下来,用户退出,然后转到视图控制器,该控制器询问我为每辆车提供的所有油漆颜色。我已经有一堆法拉利的油漆了。现在我从服务器上请求所有的颜料。在不重复资源的情况下,将现有的油漆与所有油漆聚合在一起的最好方法是什么?
发布于 2009-05-23 04:19:14
您需要的是一种从服务器唯一标识每个对象的方法。在数据库中,一个对象(部分或整个)可以表示为一行,而rowid通常是一个单调递增的整数(尽管您的数据源可以使用其他东西)。在任何情况下,请将此唯一id存储在您创建的每个对象中,并在创建新对象之前检查是否存在具有该id的对象。如果对象已经存在,则返回现有对象,如果不存在,则创建一个新对象,然后将其存储在缓存中。使用整数作为ids效果很好,因为您可以使用NSMapTable作为缓存,以rowid作为键,值是对象指针。
发布于 2009-05-23 05:06:39
在你的应用程序中维护一个NSArray*,它根据你的一些功能的hash function来存储NSString*对象:
hashValue = hash(color + horsepower + leatherSeating + whatever...)例如,您可以采用排序字符串(example code)的SHA1散列。
获取您从web服务中获得的特性,并使用相同的函数从它们生成散列值。
使用-containsObject:在应用程序的哈希表中搜索web服务值。
如果返回YES,则执行X,否则执行Y。
https://stackoverflow.com/questions/900749
复制相似问题