Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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 在领域中存储对象长列表(1000)的最有效方法是什么?_Ios_Swift_Realm - Fatal编程技术网

Ios 在领域中存储对象长列表(1000)的最有效方法是什么?

Ios 在领域中存储对象长列表(1000)的最有效方法是什么?,ios,swift,realm,Ios,Swift,Realm,我试图一次在Realm数据库中存储1000个数据,但在存储这些数据时,我的应用程序UI会被卡住10到15分钟。所以我的问题是,有没有有效的方法在Realm数据库中存储数据?这样用户界面就不会卡住 存储对象的我的代码:a func addData(object: Item) { try! database.write { database.add(object, update: true)

我试图一次在Realm数据库中存储1000个数据,但在存储这些数据时,我的应用程序UI会被卡住10到15分钟。所以我的问题是,有没有有效的方法在Realm数据库中存储数据?这样用户界面就不会卡住

存储对象的我的代码:a

func addData(object: Item)   {          
    try! database.write {             
        database.add(object, update: true)            
        print("Added new object")          
    }     
}

用户界面冻结,因为您是在主线程上执行的
对于领域,只需一次保存所有列表 (“.modified”来自新领域语法)


用户界面冻结,因为您是在主线程上执行的
对于领域,只需一次保存所有列表 (“.modified”来自新领域语法)


如果要花10分钟写出1000个对象,那么其他的东西就错了。我们的一个应用程序可以写出近10000行数据,甚至在主线程上也只需几秒钟。您应该包含更多的代码,这样我们就可以了解您在做什么,因为所提供的代码工作正常-即使有10000项。请花点时间回顾一下,我同意还有其他问题。在后台线程上写入时,如果在一个事务中添加100000个adds/creates之类的内容,您会感觉设备挂起几秒钟,但它会工作。如果你将10万条记录拆分,并在每笔交易中写入1000条记录,那么事情会变得更加顺利,你也不会看到设备变得迟钝。如果需要10分钟才能写出1000个对象,那么其他事情就错了。我们的一个应用程序可以写出近10000行数据,甚至在主线程上也只需几秒钟。您应该包含更多的代码,这样我们就可以了解您在做什么,因为所提供的代码工作正常-即使有10000项。请花点时间回顾一下,我同意还有其他问题。在后台线程上写入时,如果在一个事务中添加100000个adds/creates之类的内容,您会感觉设备挂起几秒钟,但它会工作。如果您将100000条记录拆分,并在每个事务中写入1000条记录,事情会变得更加顺利,您不会看到设备变得迟钝。@Nilesh问题中的代码中没有任何东西会冻结主线程。虽然我同意应该在后台线程上编写大量数据,但这个答案中的代码并不能做到这一点。请看一个如何在后台编写一百万条记录的好例子。@Nilesh问题中的代码中没有任何东西会冻结主线程。虽然我同意应该在后台线程上编写大量数据,但这个答案中的代码并不能做到这一点。请看一个关于如何在后台编写一百万条记录的好例子。
try! database.write {
     database.add(objects, update: .modified)
}