2010-05-04 47 views
2

我已經在CoreData中創建了一個實體,該實體包含一個作爲NSDictionary實現的可變形屬性類型。 NSDictionary屬性只包含一個自定義類的值。自定義類的屬性都是NSString類型的。自定義類符合NSCoding實現:更新CoreData中的NSDictionary屬性不保存

- (void)encodeWithCoder:(NSCoder *)coder;

- (ID)的initWithCoder:(NSCoder *)編碼器

在保存實體首次包括可變形(NSDictionary的)類型的所有屬性都正確保存在數據庫中。從數據庫中提取相同的實體並更新(包括Transformable屬性)時,它似乎會正確更新。但是,當應用程序關閉並重新打開時,Entity不會顯示更新的Transformable屬性類型,儘管類型爲NSDate和NSString的其餘屬性是最新的。 Transformable屬性是原始保存的值而不是更新的值。

這是KVO的問題,還是我在嘗試將自定義類填充到CoreData時保存NSDictionary時缺少其他內容?

回答

5

您是否將數值重新設置爲NSManagedObjectNSManagedObject不會監視可變形物體的變化。您需要在保存之前調用適當的setter。

3

我遇到了同樣的問題,並最終切換到NSDictionary作爲可變形的屬性,而不是NSMutableDictionary。只需將NSDictionary作爲mutableCopy獲取,就可以了,將最終結果放入一個NSDictionary中,並將其重新插入到managedObject中。 對我來說,我還沒有找到另一個解決方案。