[英]Core Data not updating a transformable attribute
我正在使用具有“transformable”類型屬性的Core Data NSManagedObject(在iOS應用程序中)來存儲一大塊數據。 使用內置的NSKeyedUnarchiveFromData值轉換器對數據進行編碼/解碼。 問題是我在二進制數據發生變化后無法正常更新NSManagedObject。 比方說,代碼看起來像:
id temp = [myManagedObject myTransformableAttribute];
//.. do something with temp
[myManagedObject setMyTransformableAttribute:temp];
NSError *error;
if(![[myManagedObject managedObjectContext] save:&error]) {
//present error
}
在我看來,將可轉換屬性“重新設置”到托管對象上,然后保存托管對象,應該導致數據通過NSKeyedUnarchiveFromData值轉換器重新編碼。 但編碼器永遠不會被調用,並且更新的數據不會被保存。
如果不是重新設置的原始數據返回到被管理的對象,我創建了修改后的數據的副本,並設置到被管理的對象,然后將更改的認可。 核心數據是否可能使用緩存版本的數據? 或者還有別的我在這里做錯了嗎? 謝謝...
似乎您需要覆蓋NSManagedObject實體子類中的Class initialize方法,以便變換器工作(已知的Core Data錯誤)。 以下代碼來自Apple的位置代碼示例,經過測試和運行: http : //developer.apple.com/library/ios/#samplecode/Locations/Introduction/Intro.html
+ (void)initialize {
if (self == [Event class]) {
UIImageToDataTransformer *transformer = [[UIImageToDataTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer forName:@"UIImageToDataTransformer"];
}
}
我剛遇到同樣的問題,顯然它似乎是一個已知的bug:
http://lists.apple.com/archives/Cocoa-dev/2009/Dec/msg00979.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.