0

編集されたタイトル

Core Data を使用して、サーバーから収集したデータを保存しています。では、アプリが (サーバー上appDelegateapplicationDidBecomeActiveバージョン変数から) 新しいデータをダウンロードする必要があるかどうかを確認します。古い情報がある場合は、新しいデータをダウンロードします。

問題は、私の見解の一部では、tableViews. そして、これらは から抽出されたデータの配列からデータを取得しCore DataますviewDidLoad。アプリを開いて、viewDidLoadが既に呼び出されていて、 のデータを更新するとCore Data、 でビューに入るとtableView、すべての行が間違っています。私の場合、すべての行に最初の行と同じ画像が表示され、テキストはありません。古い配列には、リロードする必要のある破損したデータがあると考えています.これを書いているときにviewDidLoad、再度呼び出す必要があることに気付きました。または、少なくとも のコードviewDidLoadviewDidAppearまたはに移動したくないwillAppear、それはこれが毎回起こることを意味するからです。プロセスを強制的に再起動することを考えましたが、これは不可能であり、Apple はとにかく強制終了を拒否するだろうと読みました。

実際には、すべてのビューを からプログラムでアンロードする方法を知る必要があるだけなAppDelegateので、再度呼び出す必要がありますviewDidLoad。または、もう一度強制viewDidLoadします。

4

1 に答える 1

1

フェッチされた結果コントローラーを使用できない場合は、次のように登録できますNSManagedObjectContextObjectsDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(contextChanged:)
    name:NSManagedObjectContextObjectsDidChangeNotification
    object:theManagedObjectContext];

必要な場合にのみデータをリロードします。

- (void)contextChanged:(NSNotification *)note
{
    // reload your table data
}

次のように、オブザーバーを削除することを忘れないでくださいdealloc

[[NSNotificationCenter defaultCenter] removeObserver:self]
于 2012-09-02T15:21:37.093 に答える