0

在我的核心數據模型中,我有一個類型爲Integer16的屬性synced。我試圖將同步的值設置爲[NSNumber numberWithBool:YES],該值與我的服務器上的值同步,就像我在我的應用程序中的許多其他託管對象子類中所做的一樣。問題是,對於這個特定的班級,我隨時撥打[context save:],將該值重置爲[NSNumber numberWithBool:NO]我調用保存後ManagedObject屬性值更改爲意外值

我的懷疑是我可能在我的代碼中有同步設置爲NO的那個對象的另一個實例,但我相當肯定情況並非如此。任何人都可以提供一些建議來幫助解決這個問題嗎?

謝謝!

+0

爲什麼在只能使用'boolean'時使用'Integer16'? – 2012-01-10 01:14:56

+0

我不知道我爲什麼做出這個決定......可能沒有一個很好的理由。我不認爲改變類型可以解決問題。 – 2012-01-10 01:22:39

+0

在你保存之前,你確認'synced'實際上被設置爲'YES' – 2012-01-10 01:29:50

回答

1

的硬盤種類,沒有任何實際的代碼,但事情你可以嘗試:

覆蓋setter和放置一個破發點,所以你可以看到被調用時。

- (void)set<#Capitalized property name#>:(<#Property type#> *)value 
{ 
    [self willChangeValueForKey:@"<#Property name#>"]; 
    [self setPrimitiveValue:value forKey:@"<#Property name#>"]; 
    [self didChangeValueForKey:@"<#Property name#>"]; 
} 

,或者嘗試使用國際志願者組織爲同一目的(見當被修改的數值)

[theObject addObserver:theObserver forKeyPath:@"keyPath" options:0 context:nil]; 

確保你還沒有任何正在改變值覆蓋willSave


檢查它確實是保存/提取的相同對象嗎?

+0

你用最後一個建議得到了它 - 我忘了我重寫了willSave並改變了同步的值。非常感謝! – 2012-01-10 03:52:46