使用Core Data在视图中引用模型对象的最佳实践是什么?

Rob*_*bin 3 iphone model-view-controller core-data uitableview

我有一个描述动物的NSManagedObject,它具有属性"name","species","scientificName"等.我在UITableView中显示所有动物并使用NSFetchedResultsController管理NSManagedObjects.

为了向我的表视图单元格提供到目前为止呈现内容所需的信息,我只是将它们弱引用到描述动物的NSManagedObject.但是,有时NSManagedObject会出现故障,并且当重绘表视图单元格时,它们会重新访问对象的属性,从而防止出现故障.

在将核心数据用作数据源时,为视图对象提供信息的最佳做法是什么?如果可能,我想避免将NSManagedObject的所有属性复制到表视图单元格.

Pey*_*loW 6

我认为清楚地分离模型,视图和控制器层是一个好习惯.特别是确保视图不持有模型状态.坚持NSManagedObject持有Model对象.复制一些数据是不可避免的.

我通常使用Model数据实现一种"绘制"View的方法.UITableViewCell子类中有类似的东西:

-(void)configureWithAnimal:(NSManagedObject*)animal {
    self.nameLabel.text = [animal valueForKey:@"name"];
    self.speciesLabel.text = [animal valueForKey:@"species"];
    // Etc. 
}
Run Code Online (Sandbox Code Playgroud)

这样,UITableViewController子类中的单行代码就可以独立于新创建或重用的单元格来设置单元格.如果许多表想要重用自定义单元格,那么并非所有表格都需要重新实现代码来查看单元格.