有什么方法可以检索知道NSPersistentStore网址的吗?
类似于:
NSURL *url = @"aaa\bbbb\ccc\xyz.sqlite"
NSPersistenStore *ps =[NSPersistentStore persistentStoreFromURL: url];
[self DoSomethingWith: ps];**显然'persistentStoreFromURL‘方法不存在!
额外信息
我知道这个存储包含了某个协调器(我不知道是哪个),在将其数据迁移到另一个存储之前,我必须从它的协调器中删除它。我只知道这个商店的网址。
我同时使用几个协调员。我希望避免循环它们,然后再循环它们的所有存储,以检查store.URL是否等于url。这就是为什么我要问的是,是否有可能直接从它的网址得到商店,然后让它的协调员清除所有的循环。
发布于 2014-03-27 12:46:21
您可以通过以下方法从持久性存储协调器获得当前存储:
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];如果您不知道哪个存储库包含在url处,请检查yourPSC.persistentStores是否包含具有相同url的存储区。
就像这样:
for (NSPersistentStore *store in yourPSC.persistentStores) {
if ([store.URL isEqual:url]) {
[yourPSC removePersistentStore:store error:nil];
}
}发布于 2014-03-27 12:42:34
必须使用指定的初始化器初始化NSPersistentStore。
initWithPersistentStoreCoordinator:configurationName:URL:options:如苹果文档所述
为此,您还需要一个商店协调员。
但是,如果要从协调器中删除存储,则需要访问协调器,否则就无法删除它。不过,您可以向NSPersistentStore请求它的persistentStoreCoordinator。还支持存储的迁移,这取决于您实际想要实现什么。请注意,迁移到另一个存储可能会导致UI问题。
如果您只有一个URL,您将需要询问协调程序是否被分配到商店。我看不出有什么别的办法。
https://stackoverflow.com/questions/22687407
复制相似问题