Xamarin 응용 프로그램에서 영역을 사용하고 있으며 원격 소스를 기반으로 로컬 데이터베이스를 새로 고치는 데 문제가 있습니다. 원격 엔드 포인트에서 데이터를 가져 와서 Realm을 사용하여 로컬에 저장하면 더 쉽고 빠르게 액세스 할 수 있습니다.영역 쓰기 대기 완료
- 것이 가능한 경우 원격 소스로부터 데이터를 가져 다음과 같이
프로그램 흐름이다.
- 지금까지 본 ID를 추적하면서 원격 소스에서 반환 한 엔티티를 반복합니다. 새 엔티티 또는 업데이트 된 엔티티가 영역에 기록됩니다. 로컬에 저장된 개체의 집합을 통해
- 루프 (트랜잭션에) 우리가
Realm.Remove(entity);
와 2 단계에서 보지 못한 요소를 제거 - 돌아 불행하게도, 실체는 전에 4 단계에서 반환 된
Realm.All<Entity>();
모든 "삭제"작업이 작성되었습니다. 결과적으로 로컬 데이터베이스가 완전히 동기화되기 전에 몇 가지 새로 고침이 필요합니다.
foreach (Entity entity in realm.All<Entity>())
{
if (seenIds.Contains(entity.Id))
{
continue;
}
realm.Write(() => {
realm.Remove(entity);
});
}
는 트랜잭션이 Realm.All<Entity>();
을 반환하기 전에 완료 될 때까지 영역 대기를하는 방법이 다음과 같이
제거 작업이 이루어집니다?
당신이 나를 보여줄 수 있습니까? – jzeferino
물론 첫 번째 글에 추가했습니다. – vicdelfant