我正在尝试使用Realm
方法创建客户并将其保存在WriteAsync
数据库中。一旦客户得到存储,我就会通过仅添加客户屏幕并相应地显示加载程序将此数据发送到服务器。
这是代码,
var newCustomer = new Customer
{
organizationName = etOrganization.Text
firstName = etFirstName.Text,
lastName = etLastName.Text,
};
await _realmInstance.WriteAsync(temp =>
{
_realmInstance.Add(newCustomer , true);
});
createUpdateCustomer(newCustomer);
但是我收到错误,即Realm Already Closed
,我在展位WriteAsync
下执行会在插入数据后关闭该域。所以在这种情况下,存储和发送数据到服务的最佳方法是什么。
答案 0 :(得分:1)
由于您在之后将newCustomer
传递给另一个函数,它将成为Realm管理的,您将需要在添加/更新后通过当前线程检索该对象的新实例您的WriteAsync
来电,或改为使用Write
,即
_realmInstance.Write(() =>
{
_realmInstance.Add(newCustomer , true);
});
createUpdateCustomer(newCustomer);
或者:
await _realmInstance.WriteAsync(temp =>
{
temp.Add(newCustomer , true);
});
// use Find if your RealmObject has a primary key...
var customer = _realmInstance.Find<Customer>(.......);
// otherwise use Where with First...
var customer = _realmInstance.All<Customer>().Where(_ => _.firstName == ~~~ & _.lastName == ~~~).First();
createUpdateCustomer(customer);
在这种情况下使用WriteAsync
不值得花费,只需使用Write
。