2013-03-12 19 views
0

假设我有一个名为RecipeBook的核心数据类,它有一个名为recipes的属性(关系),一个是食谱对象的NSSet。如何将模型传递给核心数据中的控制器

我在UITableView上显示RecipeBooks,当用户点击单元格时,它应该在另一个UITableViewController上显示食谱。

我应该通过为模型,以这最后的UITableViewController:

  • 上下文和fetchRequest
  • 或配方对象的NSSet?

如果数据库发生了变化,NSSet会“自动”更新吗?

回答

3

从你的描述中我可能会通过所选的RecipeBook实例。从那里我可以(大概)得到书中包含的所有食谱,并将其显示在表格中。这假定存在从RecipeBookRecipe的关系,根据你的描述,这应该是真实的。如果我需要在数据存储上做其他工作,我可以询问RecipeBook的托管对象上下文并使用它。

NSSet获取的对象将自动更新。但是从RecipeBookRecipe的关系都会随时更新食谱添加或删除的食谱。

最后 - 将这些直接传递给UITableView并没有什么意义。苹果的iOS框架在设计时考虑到了MVC,违背这些框架会使事情比他们需要的更加困难。如果你有一个UITableViewController,你可以传递你的模型对象。

+0

对不起,我的意思是UITableViewController,你是对的。我已经解决了这个问题。 – cfischer 2013-03-13 00:59:30

1

通常,您不应该传递“模型”对象来查看对象。 我最喜欢的思考方式是视图实际上是模型的另一种形式(将它们都视为数据的简单表示)。控制者的工作是确保这两种表示都不需要知道其他商店如何表示它。

因此,基本上,您的控制器将是您的数据委托,并负责正确填充表格单元格,并使用它自己的核心数据模型引用。

自动化问题取决于您的核心数据设置,但通常答案是肯定的。 默认情况下,CD使用键值编码,它只允许您通过valueForKey:访问属性。更高级的设置涉及让Xcode为您生成类,在这种情况下,点击几下鼠标即可获得从更新后的模型重新生成的“点符号”访问器方法。

相关问题