2016-08-11 10 views
0

CoreDataとやり取りする既存のコードを使用しています。私は後で回帰を導入することを実現するいくつかの変更を行った。私は問題を導入したコード行を分離することができましたが、なぜ私はそれが問題なのか理解できていません。CoreDataが更新された値を返さない

コードには記事を読んで、それらを読んだものとしてマークします。私はマーキングコードを変更せず、正しく機能することを確認しました。しかし、読み取りの記事のリストを取得するのコードの他の層に、私は次の変更作られた:上記

//Old 
- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    ... 
    [self retrieveReadArticles]; 
    ... 
} 

- (void)retrieveReadArticles { 
    userHistory = [UserHistory retrieveUserHistory]; //stored in iVar 
    self.readArticles = userHistory.readArticles; 
} 

を正常に動作し、私の読み取りの記事の更新リストを与えます。

//New 
- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    ... 
    [self retrieveReadArticles]; 
    ... 
} 

- (void)retrieveReadArticles { 
    UserHistory* userHistory = [UserHistory retrieveUserHistory]; //local variable 
    self.readArticles = userHistory.readArticles; 
} 

範囲の変化は、機能を壊して、更新しないために読む記事のリストになります。

同僚と私はivarが操作を完全に完了できると推測していましたが、ローカル変数は正しく保持されていてはならず、更新を返す前に範囲外になります。誰もこの予期しない動作を説明するリソースに向けて私を指摘できますか?

答えて

0

結局のところ、マーキングコードが問題だったようです。既存の読んだ記事の辞書を検索して別のエントリを追加し、UserHistoryオブジェクトを再度保存していました。既存の記事を読んで新しい辞書を作成するためにそのコードを変更すると、ivarスコープを使用せずに問題を解決するように見えます。

関連する問題