所以我有这个问题我想解决 - 我想知道是否有人可以评论/帮助我的方法。问题是,我已经部分解决了,但其余的我不太确定。
这是交易:
我有一个相当大的在线数据库,我想在第一次启动应用程序时加载。之后,如果存在新版本,我只会加载它。
我使用xml解析器来解析数据并将所有数据输入到我的数据模型中。该数据库由数千种产品组成,所有产品均由各种属性描述。
无论如何,我很容易在数据库中保存数千种产品,然后按需检索数据。
我遇到了如何对它们进行分类以及如何保存类别数据的问题。有一个主要类别,即Hi-Fi有几个子类别 - 比如'立体声','调谐器','手机'等......
如何最好地保存此信息,该类别包含15个子类别,而这些类别中的每一个又有30个产品,同时确保性能并将处理时间保持在最低限度。我不想检查所有2000个产品是否需要在每次打开新的表视图时在某个表视图中显示它们。
赞赏任何有关该apporach的提示。
答案 0 :(得分:1)
您需要两个实体:Product
和Category
。
Category
有一个名为subcategories
的多对多关系,目标实体为Category
。反向关系可以称为parentCategory
。 Category
还有一个名为products
的多对多关系。 Product
会有一个名为category
的反向关系(如果产品属于多个类别,则为categories
)
现在,您可以通过检查其products
属性来获取给定类别的所有产品。如果要在子类别中包含所有产品,可以使用如下谓词执行获取请求:
[NSPredicate predicateWithFormat:@"category == %@ OR category IN %@", category, category.subcategories];
答案 1 :(得分:-1)
我认为您可以通过包含三个实体的Core Data模式来解决它:Product,Category和SubCategory。
产品具有目标类别的关系类别和目标SubCategory的关系子类别。
类别包含与目标产品的多对多关系产品和具有目标SubCategory的多对多关系子类别。
SubCategory具有与目标产品的多对多关系产品和具有目标类别的关系类别。
定义这些关系时,请记住同时指定反向关系。
现在,只需加载相关类别并访问products属性,即可获得属于特定类别的所有产品的列表。还应该可以使用NSFetchRequest for Product,并使用谓词指定所需的类别。关于性能和内存要求哪个最好我不能说,所以你只需要测试哪种方法效果最好。