這是我的場景的簡化版本,但沒關係。當關系改變時,是否有更新NSManagedObject的好方法?
比方說,你有三個CoreData實體,每個NSManagedObject的一個相應的子類,1對1的關係如下:
人 - > ContactRecord - > ******中國
Person實體有vcard屬性,該屬性以字符串形式保存該人員的vCard數據。
的******中國實體有兩個屬性:實際數量,以及電話號碼(手機,家庭,工作等)的類型。
眼下,在人willSave
方法,我更新的虛擬卡屬性。如果Person對象上的另一個屬性發生更改,這可以正常工作。但是,如果我更改PhoneNumber對象上的類型或數字或ContactRecord上的任何屬性,則不會在Person對象上調用willSave
方法。
當PhoneNumber對象上的屬性發生更改時,是否有更新Person對象的好方法?
現在,我看到的最好的選擇是使用NSManagedObjectContextWillSaveNotification。該通知調用的方法可以篩選已更改的對象,並恢復反向關係以調用Person對象上的某個方法,但是這發生在NSManagedObjectContext已經保存之後,因此在此之後需要另一次保存。我希望在保存發生之前將此屬性設置爲正確的值。
你在哪裏看到'-willSave:'的通知優勢? –
我必須誤讀該通知名稱:我認爲它是DidSave,而不是WillSave。這可能會訣竅。 –
Marcus:在「children」中使用'willSave'的缺點是PhoneNumber類需要了解有關Person類的內容。在這個例子中,這是微不足道的,但在應用程序的更復雜的現實中,我想盡可能保持它們的鬆散耦合。 –