Realm.io。如何刷新被替换的境界?

时间:2015-10-03 20:04:25

标签: ios realm

我刚刚在基于Realm的iOS应用中创建了一个dropBox备份/恢复。我用导入的defaultRealm替换当前的defaultRealm。如果我终止应用程序并重新启动它,一切都按预期工作,我看到我的新导入数据,但我无法重新启动应用程序(即使我已检查旧域文件已被删除)并重新创建)。

我尝试在RLMRealmConfiguration重新分配域路径并更新架构版本以执行迁移但没有任何更改。有没有办法强制域刷新数据?

1 个答案:

答案 0 :(得分:2)

可靠地切换Realm文件的唯一方法是确保您的应用在任何线程上都没有对任何RLMRealm的强引用。

如果可以保证这一点,那么此时如果删除基础Realm文件(包括关联文件,例如锁定文件)并将新文件保存到该路径,则可以调用[RLMRealm defaultRealm]并检索新数据。

这里有一些删除所有相关Realm文件的代码:

NSString *path = [RLMRealm defaultRealmPath];

NSString *fileName = path.lastPathComponent;

NSString *folderPath = [path stringByDeletingLastPathComponent];

NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:folderPath];

// Enumerate all the files in the folder containing the Realm file    
for (NSString *filePath in enumerator) {
    // Check to find all the associated Realm files
    if ([filePath containsString:fileName]) {
        NSString *fullPath = [folderPath stringByAppendingPathComponent:filePath];

        [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil];
    }
}

此问题跟踪添加将Realm文件删除到API中的安全方法:Issue #2422