簡體   English   中英

核心數據不更新可轉換屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM