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的解决

如何在不使用 Segue 的情况下在单独的 UIViewController 中选择实例变量

设计模式

单例模式

CoreData 应用程序中的“保存”