Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS上重新初始化swift Realm DB的正确方法?_Ios_Swift_Realm - Fatal编程技术网

在iOS上重新初始化swift Realm DB的正确方法?

在iOS上重新初始化swift Realm DB的正确方法?,ios,swift,realm,Ios,Swift,Realm,我需要在iOS应用程序中注销时重新初始化本地域数据库,如下所示: 我们在iOS上使用swift 首先,该片段似乎已经过时,因为中日志文件的位置现在位于“default.realm.management”下 但最重要的是,在删除领域文件后,如果我尝试在不重新启动应用程序的情况下访问领域API,我将收到EXC_BAD_访问 重新启动后,应用程序工作正常。删除磁盘上的Realm文件并继续使用Realm是Realm无法很好地支持的。领域及其支持对象和资源可能尚未被去初始化和清理,即使在应用程序认为所有

我需要在iOS应用程序中注销时重新初始化本地域数据库,如下所示:

我们在iOS上使用swift

首先,该片段似乎已经过时,因为中日志文件的位置现在位于“default.realm.management”下

但最重要的是,在删除领域文件后,如果我尝试在不重新启动应用程序的情况下访问领域API,我将收到EXC_BAD_访问


重新启动后,应用程序工作正常。

删除磁盘上的Realm文件并继续使用Realm是Realm无法很好地支持的。领域及其支持对象和资源可能尚未被去初始化和清理,即使在应用程序认为所有对旧领域的引用都已超出范围的时候,也可能会导致问题


处理注销情况的建议方法是停止使用旧域,并记下删除它(可能在
NSUserDefaults
中,或在单独的管理域中)。在后续应用程序启动时(但在打开任何领域之前),您的应用程序将查看是否有任何领域标记为删除,然后从磁盘中删除其数据库和支持文件。

Realm.deleteAll()API是否足以满足您的需要?当您在删除文件后尝试访问领域API时,您正在调用什么方法?您是否正在创建一个新领域,并看到崩溃,即使您从未引用现在已删除的领域或其任何对象?是的。当访问数据时,应用程序总是创建一个新的领域对象。我们从不引用在删除文件之前创建的领域对象。我问我们的工程师,处理您的情况的建议方法是什么,我已经给出了答案。我还将更新文档,感谢您提醒我们注意差异。