Swift NSFetchedResultsController 嵌套对象的最佳实践
Posted
技术标签:
【中文标题】Swift NSFetchedResultsController 嵌套对象的最佳实践【英文标题】:Swift NSFetchedResultsController Best Practice with Nested Objects 【发布时间】:2016-08-23 03:22:54 【问题描述】:我有一个关于在使用 NSFetchedResultsController 和核心数据时的最佳实践的问题,当您有一个托管对象具有一组托管对象作为属性时,例如:
class SomeObject: NSManagedObject
@NSManaged var name: String
@NSManaged var notes: String?
@NSManaged var otherObjects: Set<OtherObject>?
class OtherObject: NSManagedObject
@NSManaged var name: String
@NSManaged var notes: String?
@NSManaged var parent: SomeObject
我正在使用 NSFetchedResultsController 为“SomeObject”实例填充 UITableView。当用户选择其中一个表格元素时,它会转到另一个 UIView,其中包含有关 SomeObject 实例的详细信息以及分配了 OtherObjects 列表的 UITableView。
我的问题是高效的表视图管理的最佳实践是什么?我应该使用父 SomeObject 元素创建另一个 NSFetchedResultsController 来过滤和查询数据库,还是应该在初始数据查询期间使用提取的 OtherObjects 填充表?我将 SomeObject 实例注入到下一个 UIView 中,因此新视图具有 ManagedObjectContext 和原始信息。
【问题讨论】:
【参考方案1】:我的问题是高效的表视图管理的最佳实践是什么?
过早的优化是万恶之源(Donald Knuth)
但是,Core Data 不是关系数据库管理系统。在核心数据中,关系是引用。所以使用那些参考。这是默认设置。 (Core Data 使用 faulting 和 uniquing,所以我不认为会有很大的不同。但如果您遇到运行时行为问题,您仍然可以在 SO 上发布 Q。)
【讨论】:
以上是关于Swift NSFetchedResultsController 嵌套对象的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
swift [Swift Notes]在学习Swift #Swift的同时收集笔记