【问题标题】:Magical Record - duplicate records appearing even if DB file is deletedMagical Record - 即使删除数据库文件也会出现重复记录
【发布时间】:2014-07-20 09:01:47
【问题描述】:

在我的 ios 应用程序中,我使用的是 Magical Record 和 NSFetchedResultsController。我正在尝试实现以下功能:

  1. 用户导航到设置屏幕
  2. 他选择 - '删除帐户'
  3. 他的所有数据都被删除了
  4. 他被导航到重新注册屏幕

要删除他所有的数据,我写在下面的代码:

- (void)cleanAndResetupDB
{
    [MagicalRecord cleanUp];

    BOOL isSuccess = YES;
    for (NSString *dbStore in [self dbBackups]) {
        NSError *error = nil;

        NSURL *storeURL = [NSPersistentStore MR_urlForStoreName:dbStore];

        if(![[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error]){
            NSLog(@"An error has occurred while deleting %@", dbStore);
            NSLog(@"Error description: %@", error.description);
            isSuccess = NO;
        }
    }

    if (isSuccess) {
        [MagicalRecord setupCoreDataStackWithStoreNamed:CRP_DB];
    }
}

- (NSArray *)dbBackups
{
    NSString *shmFileName = [NSString stringWithFormat:@"%@-shm",CRP_DB];
    NSString *walFileName = [NSString stringWithFormat:@"%@-wal",CRP_DB];
    return @[CRP_DB,shmFileName,walFileName];
}

注册完成后,用户被导航到联系人屏幕,我们从服务器检索相关联系人并将其存储在本地数据库中。由于 FRC 用于从本地 DB 中检索数据并显示在表视图中,因此一旦将数据保存到 db 中,它就会自动显示在表视图中。

问题是—— 如果我在删除本地数据库后退出应用程序,重新启动时会显示正确的记录,但如果我在删除本地数据库后不退出应用程序,则会显示重复记录。

有什么线索吗?

【问题讨论】:

标签: ios core-data nsfetchedresultscontroller magicalrecord


【解决方案1】:

如果你正在使用 Core Data 并且你想删除你的数据库,你必须真正删除你的持久化存储。仅仅删除数据库文件是不够的。 Core Data 将对象缓存在内存中,如果它不知道应该删除它们,则可以将它们重新提交到数据库。特别是,您错过了对removePersistentStore:error: 的调用。

NSPersistentStoreCoordinator *storeCoordinator = ...; // you should already have a persistent store coordinator
NSURL *storeURL = [NSPersistentStore MR_urlForStoreName:dbStore];
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多