首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么方法可以检索知道NSPersistentStore网址的吗?

有什么方法可以检索知道NSPersistentStore网址的吗?
EN

Stack Overflow用户
提问于 2014-03-27 12:17:59
回答 2查看 1K关注 0票数 2

有什么方法可以检索知道NSPersistentStore网址的吗?

类似于:

代码语言:javascript
复制
NSURL *url = @"aaa\bbbb\ccc\xyz.sqlite"

NSPersistenStore *ps =[NSPersistentStore persistentStoreFromURL: url];

[self DoSomethingWith: ps];

**显然'persistentStoreFromURL‘方法不存在!

额外信息

我知道这个存储包含了某个协调器(我不知道是哪个),在将其数据迁移到另一个存储之前,我必须从它的协调器中删除它。我只知道这个商店的网址。

我同时使用几个协调员。我希望避免循环它们,然后再循环它们的所有存储,以检查store.URL是否等于url。这就是为什么我要问的是,是否有可能直接从它的网址得到商店,然后让它的协调员清除所有的循环。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-27 12:46:21

您可以通过以下方法从持久性存储协调器获得当前存储:

代码语言:javascript
复制
    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的存储区。

就像这样:

代码语言:javascript
复制
   for (NSPersistentStore *store in yourPSC.persistentStores) {
       if ([store.URL isEqual:url]) {
           [yourPSC removePersistentStore:store error:nil];
       }
   }
票数 2
EN

Stack Overflow用户

发布于 2014-03-27 12:42:34

必须使用指定的初始化器初始化NSPersistentStore

代码语言:javascript
复制
initWithPersistentStoreCoordinator:configurationName:URL:options:

苹果文档所述

为此,您还需要一个商店协调员。

但是,如果要从协调器中删除存储,则需要访问协调器,否则就无法删除它。不过,您可以向NSPersistentStore请求它的persistentStoreCoordinator。还支持存储的迁移,这取决于您实际想要实现什么。请注意,迁移到另一个存储可能会导致UI问题。

如果您只有一个URL,您将需要询问协调程序是否被分配到商店。我看不出有什么别的办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22687407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档