2

URL を知っている NSPersistentStore を取得する方法はありますか?

何かのようなもの:

NSURL *url = @"aaa\bbbb\ccc\xyz.sqlite"

NSPersistenStore *ps =[NSPersistentStore persistentStoreFromURL: url];

[self DoSomethingWith: ps];

** 'persistentStoreFromURL' メソッドは明らかに存在しません!

追加情報:

このストアがコーディネーターに読み込まれていることはわかっています (どのコーディネーターかはわかりません)。データを別のストアに移行する前に、コーディネーターから削除する必要があります。この店のURLしか知りません。

同時に複数のコーディネーターを使用しています。それらをループしてから、すべてのストアを再度ループして、store.URL が url と等しいかどうかを確認することを避けたいと思います。これが、URL からストアを直接取得し、ループなしでコーディネーターを取得できるかどうかを尋ねている理由です。

4

2 に答える 2

2

次のコマンドを使用して、Persistent Store Coordinator から現在のストアを取得できます。

    NSURL *url = @"aaa\bbbb\ccc\xyz.sqlite"
    NSPersistentStoreCoordinator *yourPSC = self.psc // Create or obtain reference to your psc

    NSPersistentStore *ps = [yourPSC persistentStoreForURL:url];

    [self DoSomethingWith: ps];

どの psc に URL のストアが含まれているかわからない場合は、yourPSC.persistentStores同じ URL のストアが含まれているかどうかを確認してください。

そのようです:

   for (NSPersistentStore *store in yourPSC.persistentStores) {
       if ([store.URL isEqual:url]) {
           [yourPSC removePersistentStore:store error:nil];
       }
   }
于 2014-03-27T12:46:21.460 に答える
0

NSPersistentStore指定されたイニシャライザを使用して aを初期化する必要があります

initWithPersistentStoreCoordinator:configurationName:URL:options:

Appleのドキュメントで説明されているように

これには店舗コーディネーターも必要です。

ただし、コーディネーターからストアを削除する場合は、コーディネーターにアクセスできる必要があります。そうしないと、ストアを削除する方法がありません。NSPersistentStoreただし、そのことを尋ねることができますpersistentStoreCoordinator。実際に達成したい内容に応じて、ストアの移行もサポートされています。別のストアに移行すると、UI の問題が発生する可能性があることに注意してください。

URL しかない場合は、それがストアに割り当てられているかどうかコーディネーターに尋ねる必要があります。箱から出して他に方法はありません。

于 2014-03-27T12:42:34.860 に答える