0

私のコアデータモデルにInteger16型の属性syncedがあります。同期の値を[NSNumber numberWithBool:YES]に設定しようとしています。値が私のサーバー上の値と同期すると、私のアプリで持っている他の管理オブジェクトのサブクラスの多くと同じようになります。問題は、この特定のクラスでは、私が[context save:]と呼ぶといつでも、値は[NSNumber numberWithBool:NO]にリセットされます。保存を呼び出すと、ManagedObjectの属性値が予期しない値に変更されます

私の疑惑は、コードにそのオブジェクトの別のインスタンスがあるかもしれないということでした。どこかのオブジェクトがNOに同期されていますが、私はこれが当てはまらないと確信しています。この問題の解決に役立つ助言を誰かからいただけますか?

ありがとうございます!あなたが試みることができる任意の実際のコードが、物事のないハードの

+0

'boolean'を使うことができるときに' Integer16'を使うのはなぜですか? –

+0

なぜ私はその決定を下したのかわかりません。たぶん正当な理由はありませんでした。私はタイプを変更すると問題を解決するとは思わない。 –

+0

保存する前に、 'synced'が実際に' YES'に設定されていることを確認しましたか? –

答えて

1

種類:それが呼び出されているとき、あなたが見ることができるように

オーバーライドセッターとは、ブレークポイントを配置します。

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

か、値を変更しているものでwillSaveをオーバーライドしていないことを確認してください

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

(値が変更されたときに参照)同じ目的のためにKVOを使用してみてください。


セーブ/フェッチされたオブジェクトは間違いありませんか?

+0

でした。最後の提案でそれを得ました。私はwillSaveを上書きして同期の値を変更することを忘れていました。本当にありがとう! –

関連する問題