我试图拥有一个类似于 %Library.RelationshipObject 的集合类,因为它管理保存和删除集合中的对象。我希望灵活地使用我自己的对象执行此操作,因此我不想使用关系关键字或子类化 %Library.RelationshipObject 类。
我不能在持有这个集合的父对象上调用我自己的 Save() 和 Delete() 方法,并让它调用我的集合类(并且只让我的类调用 Save() 而不是 %Save()),因为 swizzling 可能直接调用 %Save()。
我正在尝试在我的集合类和父类上使用 %OnAddToSaveSet 方法。当调用父类 %OnAddToSaveSet 时,父类将我的集合类放入存储集中。集合类调用会根据需要保存和删除集合中的项目。
似乎在我的集合类中执行此操作的正确方法是使用他们的 %OnAddToSaveSet() 方法将要保存的集合项添加到存储集中,并使用 %Delete() 删除需要删除的项目,然后环境
%objTX(5,+oref) = oref
对于每个已删除的项目。
这是正确的方法吗?我错过了什么吗?这支持吗?我可以将任何不受支持的内容更改为更好的支持内容吗?