核心数据:关系和用户对象

时间:2013-04-05 19:16:37

标签: ios core-data nsfetchrequest nsfetchedresultscontroller datapersistance

我正在将StackMob与CoreData(远程数据库)一起使用,但我认为这是一个一般的核心数据问题。

我有3个实体:

  1. 用户(登录)
  2. 汽车
  3. 自行车
  4. 每个实体都有几个属性。

    用户可以拥有多个汽车和自行车对象(多对多关系)。汽车和自行车只能拥有一个所有者(用户)(与一对一关系)。

    现在假设我们有2,000个用户。每个用户都是汽车经销商,在CoreData中存储了500辆汽车和300辆自行车记录/对象。我希望用户根据汽车和自行车的属性进行提取。我打算为此使用谓词。为了减少常量获取请求,我还计划使用Cache。

    但是,我的问题是:

    1. 如何保存每个用户下的记录/对象? CoreData中有一个术语吗?

    2. 我希望用户只能在用户创建的对象中登录并能够根据其属性(Model,Manufacture,DateStamp等)获取所有汽车/自行车。我想我要避免的是当用户根据Cars and Bikes实体中的属性执行获取请求时,它只在自己的User对象下搜索。我不希望获取请求搜索所有其他用户的对象,因为这会浪费,因为我担心会减慢应用程序的速度。在CoreData中设置它的最佳方法是什么?

    3. 刚刚阅读了2本核心数据手册,我不知道如何处理这个问题。我知道我不是最聪明的,所以我向专家寻求一些建议。谢谢。

1 个答案:

答案 0 :(得分:2)

CoreData实际上非常优化。你需要的是一个NSSearchPredicate和NSFetchedResultsController。这些都很复杂,我不能只是“告诉”你如何使用它们。我发现这个开放课程非常有帮助

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

它使用核心数据构建一个在iOS中获取应用程序的网站。检查核心数据集,如果你不知道他在说什么,请回去看一些早期的