【问题标题】:Change Store with Magical Record用神奇的唱片改变商店
【发布时间】:2015-08-31 16:58:05
【问题描述】:

在我的应用程序中,我想使用 2 个不同的商店。每个商店都将根据用户选择进行选择,加载并使用它进行操作。

Magical Record 支持这个吗?

当我使用[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:] 设置核心数据时,我根据站点创建了一个商店名称:

- (void)setupDBForSite:(NSString *)site {
    DLog(@"DBStore: %@", [self loadDBStoreForSite:site]);
    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:[self loadDBStoreForSite:site]];
}

- (NSString *)loadDBStoreForSite:(NSString *)site {
    NSString *bundleID = (NSString *)[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey];
    return [NSString stringWithFormat:@"%@ - %@.sqlite", bundleID, site];
}

所以我希望如果我通过“Site01”它会创建一个独特的商店。下一次启动,传入“Site13”。但是当我测试每个商店是否有自己的数据时,两个商店都包含相同的信息。

还是我做错了什么?

编辑:好的,所以问题出在我的测试上。看起来它会加载正确的商店并很好地保存到商店。

问题是删除商店并加载新商店。当我为“Site01”加载存储然后为“Site13”加载存储时,我仍然只看到“Site01”数据。如果我首先为“Site13”加载商店,它的信息是正确的。

所以我需要删除一个商店,然后加载新的商店。但是我没有看到 Magical Record 删除商店的方法。

【问题讨论】:

    标签: objective-c core-data magicalrecord


    【解决方案1】:

    您的代码看起来不错。当然,如果你不根据商店名称做任何不同的事情,那么商店将具有相同的内容。

    【讨论】:

    • 我会根据商店做不同的事情。如果用户选择“Site01”,则会为他创建并保存一个UserDB 实体。下一个人选择“Site13”,为他创建并保存了一个新的UserDB 实体。现在两个 UserDB 实体都出现在两个商店中。
    • 好的,我做了更多测试,看起来对象正在保存到正确的存储中。问题是我无法在商店之间切换。我首先加载“Site01”,检查其中的用户,然后我尝试加载“Site13”并显示“Site01”的用户。如果我为“Site13”加载商店,然后我尝试为“Site01”加载商店,我会为“Site13”获取用户。
    • 如果您甚至需要两家商店,那么对您的困境的描述就引出了一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多