1

CoreData を使用して、RestKit を介してサーバーから取得したデータを永続化する iOS アプリがあります。押すとすべてをクリアしNSUserDefaults、ユーザーをログイン画面に戻すログアウトボタンを作成しました。

アプリを初めて起動するmanagedObjectStoreと、 および他のすべての CoreData 機能が のappDidFinishLaunchingWithOptionsメソッドで生成されappDelegateます。ただし、アプリからログアウトして再度ログインしようとすると、mymanagedObjectContextが nil であるため例外がスローされます。ログアウトviewControllerからログインviewControllerに渡さないことを選択したため、nilです。古いものを一掃し、新しいユーザーのために新しいものを作成したいと思います。

managedObjectStore/Contextログアウトを押してログイン画面に移動したときに新規作成したいと思います。このようなことは可能ですか?基本的に、ユーザーがログアウトを押したときにアプリを再起動する必要があります。

誰かがこのようなことがどのように行われるかを教えてもらえますか? 私はこれにかなり慣れていないので、これが不適切または不必要である場合は、正しい/適切な方法を学ぶことができます!

4

1 に答える 1

0

ヒューマン インターフェイス ガイドラインに関する限り、アプリの再起動は非常に悪い習慣です。これは絶対に避けてください。

didLogin メソッドでデータ インスタンスを作成してみてください。ログイン ビュー コントローラーは、必要に応じてデリゲートからこれを呼び出すことができます。

それ以外の場合は、ログアウト時に managedObjectStore を nil に設定し、次のようにアクセサ メソッドを使用できます。

    NSManagedObjectContext *_sharedInstance;
-(NSManagedObjectContext*) getManagedOBjectContext {
    if (_sharedInstance==nil) {
        _sharedInstance = <do create>;
     }
    return _sharedInstance;
}

///when we logout
-(IBaction) didLogout {
     <cleanup>
    _sharedInstance = nil;
}

これは、シングルトンと遅延読み込みを組み合わせた例です。オンデマンドで作成され、次に nil に設定されるまで一度だけ作成されます。

于 2013-08-02T01:03:51.810 に答える