Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c Realm-beginWriteTransaction终止线程_Objective C_Realm - Fatal编程技术网

Objective c Realm-beginWriteTransaction终止线程

Objective c Realm-beginWriteTransaction终止线程,objective-c,realm,Objective C,Realm,我的应用程序从我的后端下载了很多信息,我还必须将这些信息保存在本地。我一直在使用Realm这样做,但有一个恼人的问题,我不知道为什么会发生这种情况 这并不是一直都会发生,但当我下载了很多东西并做了一个接一个的交易时,它确实会发生。 有时我调用[realm beginWriteTransaction]领域引发了一个异常,但我无法使用try/catch函数获得它,因此我想知道您是否有人已经经历了这个异常 它总是发生在我在后台做一些事情的时候,我总是在启动新事务之前检查领域是否不在写事务中 感谢这要求

我的应用程序从我的后端下载了很多信息,我还必须将这些信息保存在本地。我一直在使用
Realm
这样做,但有一个恼人的问题,我不知道为什么会发生这种情况

这并不是一直都会发生,但当我下载了很多东西并做了一个接一个的交易时,它确实会发生。 有时我调用
[realm beginWriteTransaction]领域引发了一个异常,但我无法使用try/catch函数获得它,因此我想知道您是否有人已经经历了这个异常

它总是发生在我在后台做一些事情的时候,我总是在启动新事务之前检查领域是否不在写事务中


感谢

这要求当您修改保存在领域数据库中的对象时,如果您修改已保存对象的属性,则必须使用它
realm.write
realm.beginWriteTransaction
您不应该在更改侦听器/通知令牌中开始写入事务这很难说,如果在打开和关闭领域事务时存在任何不平衡,就像您没有提到的代码一样。您说您在打开每个打开的事务之前都在检查,您在关闭连接之前也在检查,这样您就不会执行不匹配的打开/关闭事务。我建议只在下载前打开一个事务,下载后关闭它。关于“我在后台做一些事情”,当你第一次创建领域实例时,确保你在创建领域的同一线程中使用领域,否则它会崩溃。通过default,Realm不是线程安全的。我在其他线程中启动事务时没有任何问题,我一点也没有收到异常。在更改任何属性时,我也不会遇到任何问题,我基本上做的是:1)我进行API调用,获取信息并保存到数据库中2)我进行另一个API调用以获取另一个信息并保存到数据库中,所以我会一直这样做,直到获得所需的所有信息,当我在数据库中保存了大量信息,最终,
realm.beginWriteTransaction
终止线程时,就会出现问题。