如何在Xamarin中从web(JSON)批量插入行到realm数据库中

时间:2016-10-22 16:22:26

标签: json xamarin xamarin.ios xamarin.android realm

这是我第一次尝试使用Realm的Xamarin工作室(为iOS和Android制作应用程序),自从过去24小时后我就陷入了这种情况。

我的在线数据库表有30,000行。早些时候我曾经在Android工作室工作过,我曾经在应用程序的第一次运行中使用JSON,GSON导入这些行并插入到SQLite数据库中。

但我无法在Realm& Xamarin。我知道,我没有提供任何代码片段(我的努力),但老实说即使经过大量搜索后,我也找不到如何处理?

1 个答案:

答案 0 :(得分:2)

我已经在Github issue中回答了这个问题,但是如果其他人偶然发现它,那么在不阻止UI线程的情况下执行此操作的最佳方法是使用Realm.WriteAsync API。基本上,你会做类似的事情:

var items = await service.GetAllItems();
// I assume items are already deserialized RealmObject-s
var realm = Realm.GetInstance();
await realm.WriteAsync(r =>
{
    foreach (var item in items)
    {
        r.Manage(item);
    }
}
/* Data is loaded, show message or process it in other ways */

需要注意的一点是,在WriteAsync lambda中,我们使用的是r个实例,而不是原始的realm个实例。原因是因为领域不是线程安全的,异步写入将在另一个线程上发生,所以它隐式地创建另一个实例并将其作为action参数的参数传递。