0

假设我有一个名为 RecipeBook 的核心数据类,它有一个名为 recipes 的属性(关系),即一个配方对象的 NSSet。

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

我应该将什么作为模型传递给最后一个 UITableViewController:

  • 一个上下文和一个 fetchRequest
  • 还是配方对象的 NSSet?

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

4

2 回答 2

3

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

没有NSSet获取的对象会自动更新。但是从 aRecipeBook到它Recipe的 s 的关系将在任何时候从食谱书中添加或删除食谱时更新。

最后 - 将其中任何一个直接传递给 aUITableView没有多大意义。Apple 的 iOS 框架在设计时就考虑到了 MVC,而违背这一点会使事情变得比他们需要的要困难得多。如果你有一个UITableViewController,你可以将你的模型对象传递给它。

于 2013-03-12T23:39:08.680 回答
1

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

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

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

于 2013-03-12T23:37:15.583 回答