2017-05-01 5 views
0

WriteAsyncメソッドを使用して顧客を作成し、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の下で行います。この場合、データを保存してサービスに送信する最良の方法は何でしょうか。

答えて

1

あなたはそれがレルムの管理となりした後、あなたはWriteAsync呼び出しを介して、それを更新/追加した後、現在のスレッドでオブジェクトの新しいインスタンスを取得する必要がある、またはその代わりWriteを使用するか、別の関数newCustomerを渡しているので、 、すなわち

_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を使用してこのケースでは、ちょうどを使用し、オーバーヘッド価値はありません。

+0

私は 'Realms.Exceptions.RealmClosedException:このオブジェクトは閉じた領域に属しています 'というエラーを受け取っています。エラーは、_realmInstanceがどこでも閉じられていないことを確認しています。 – Hunt

+0

@Hunt * Before *' WriteAsync' Realmインスタンス( '_realmInstance')を' IsClosed'でチェックしてください。本当ですか? – SushiHangover

+0

false false Debug.WriteLine( "レルムステータス" + _realmInstance.IsClosed); 'それを確認しました – Hunt

関連する問題