1

「オフライン作業」機能を備えたアプリを設計しています。この機能を有効にすると、外部データベースのデータがデバイスの Core Data データベースと同期されます。私が抱えている問題は、複数のユーザーに関するものです。

私のアプリケーションは、あるユーザーが別のユーザーが読み取れないデータにアクセスできる許可システムも実装しています。私の質問は、ログインするすべてのユーザーに対して Core Data スキーマのインスタンスを作成することは可能ですか? このようにして、すべてのユーザーのデータベースを切り替えることができ、他のユーザーからのデータとやり取りすることはできません。

もちろん、別の提案も受け付けています。

4

1 に答える 1

2

はい、クリス、いくつかの方法でそれを行うことができます。これは私が自分のアプリで行ったことであり、お勧めします。

  • NSPersistentStore を作成するときに、ファイル名がユーザー ID またはユーザー名に依存するようにします。ユーザー ID を作成するには、サーバーからユーザー ID を取得するのを待ちます。アプリがログアウト状態にある場合は、NSPersistentStore を呼び出さないでください。念のため、現在のユーザー ID が存在しない場合は nil を返します。

  • ユーザーがログインするたびに、上記の NSPersistentStore に基づいて NSManagedObjectContext を開始します。

  • ユーザーがログアウトするたびに、必ずnilすべてのコア データ スタック (NSManagedObjectContext、NSPersistentStore、および NSManagedObjectModel) に設定して、すべての NSManagedObjects がメモリから削除されるようにします。

この方法では、あるユーザーが他のユーザーのデータにアクセスできないようにする必要がありますが、スキーマについてはわかりません。

于 2013-08-19T11:43:14.343 に答える