CoreData 或 Segue 用于访问类实例
Posted
技术标签:
【中文标题】CoreData 或 Segue 用于访问类实例【英文标题】:CoreData Or Segue For Accessing Class Instance 【发布时间】:2017-11-04 20:22:50 【问题描述】:我有一个应用程序需要多个视图控制器中的相同数据。目前,为了访问这些数据,我在导航应用程序时使用 performSegue 将类实例从一个控制器发送到另一个控制器。
我的问题是: 使用 CoreData 访问每个视图控制器中的数据是否更简洁?我可以在 ViewDidLoad 处查询 coreData,然后将我从 CoreData 检索到的字符串转换为类实例对象,而不是使用 performSegue。
【问题讨论】:
我将通过prepareForSegue
传递NSManagedObject 实例。这样您就不必担心在浏览视图堆栈时重新获取数据
谢谢保罗!这就是我要做的。
【参考方案1】:
按照您的描述传递托管对象是依赖注入软件设计模式的一种方法,通常比让每个视图控制器查找它需要的对象更好。
这些视图控制器是否会需要自行查找托管对象?也就是说,当无法传入托管对象或由于某种原因无法传入正确的对象时,是否会使用它们?如果是这样,那么他们能够查找托管对象可能是有意义的。如果没有,那么这样做会导致重复代码和增加复杂性而没有任何好处。
简而言之,听起来您已经在做正确的事情,除非您知道令人信服的理由,否则您不应该做出您描述的更改。
【讨论】:
谢谢汤姆。这似乎是最好的选择。我想我对使用 CoreData 处理所有事情的想法有点太兴奋了。以上是关于CoreData 或 Segue 用于访问类实例的主要内容,如果未能解决你的问题,请参考以下文章
CoreData多个NSPersistentContainer实例导致Multiple NSEntityDescriptions +entity unable disambiguate的解决