2个班级之间的循环引用

时间:2017-07-22 18:16:15

标签: swift core-data

我在尝试解决此循环引用时遇到问题。

首先我有两个NSManagedObject ACoreDataBCoreData 我想将模型从DataBase层分离到UI模型。

因此,我创建了AB类,这些类将在UI中。

我创建了一个协议(ConvertibleACoreDataBCoreData将实现转换为ui对象。

到目前为止一切顺利,但现在我遇到了问题。每次我从ACoreData调用转换时,它都会创建一个新的A,它将分配转换的BCoreData,但BCoreData对象将再次为{{{ 1}}对象。我最终会得到一个相互呼叫A的循环。

这是代码:

convert()

您知道如何解决此问题以避免此圈参考中的循环?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我建议最好的解决方案是不要这样做。您为代码添加了很多复杂性,没有真正的优势。权衡您将托管对象远离UI所看到的好处,以及始终需要转换到托管对象或从托管对象转换的额外复杂性,在其中一个更改时将值从一个复制到另一个,保留重复的内存命中周围的数据副本,也可能是我还没有想过的其他东西。 "清洁"在可维护性和性能方面,架构将花费你很多。

如果您不希望UI了解托管对象,请定义托管对象采用的协议。使用UI实现协议"而不是托管对象。保持UI不知道数据存储的细节不需要重复的数据模型。