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的同时收集笔记

Swift 反射

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别