0

我试图拥有一个类似于 %Library.RelationshipObject 的集合类,因为它管理保存和删除集合中的对象。我希望灵活地使用我自己的对象执行此操作,因此我不想使用关系关键字或子类化 %Library.RelationshipObject 类。

我不能在持有这个集合的父对象上调用我自己的 Save() 和 Delete() 方法,并让它调用我的集合类(并且只让我的类调用 Save() 而不是 %Save()),因为 swizzling 可能直接调用 %Save()。

我正在尝试在我的集合类和父类上使用 %OnAddToSaveSet 方法。当调用父类 %OnAddToSaveSet 时,父类将我的集合类放入存储集中。集合类调用会根据需要保存和删除集合中的项目。

似乎在我的集合类中执行此操作的正确方法是使用他们的 %OnAddToSaveSet() 方法将要保存的集合项添加到存储集中,并使用 %Delete() 删除需要删除的项目,然后环境

%objTX(5,+oref) = oref

对于每个已删除的项目。

这是正确的方法吗?我错过了什么吗?这支持吗?我可以将任何不受支持的内容更改为更好的支持内容吗?

4

2 回答 2

1

我相信您在 %OnAddToSaveSet() 中的代码应该被调用yourObject.%AddToSaveSet()yourObject.%RemoveFromSaveSet()控制哪些对象应该(或不应该)包含在当前的保存操作中。我相信你也应该能够对不再在集合中的对象调用 %Delete(),如果这是你想要实现的行为。

于 2013-07-09T20:09:17.477 回答
0

与其直接使用 %Library.RelationshipObject,不如使用RelationShips
这样你就获得了更多的可能性,用于控制父子对象。

于 2013-07-09T05:58:34.397 回答