2017-04-11 7 views
1

저는 realmList를 가지고 있습니다. 예를 들어 realmObject 내에서 studentsList라고 말하면 클래스입니다. 주어진 클래스에 대한 학생 목록을 요청하고 studentList 내에서 동일한 목록을 업데이트하려고합니다. 서버에서 반환되는 studentList에는 신입생뿐만 아니라 신입생도 포함될 수 있습니다. 그래서 저는 리얼리즘 전문가가 신입생을 추가하여 기존 학생들을위한 정보를 업데이트하기를 바랍니다. 나는이 무슨 짓을RealmList에서 realmObject를 추가/업데이트하십시오.

,

  1. 크기와 루프를 개시 == serverReturnedStudentList.size()
  2. 만든 루프 내 학생 및 영역에 추가는
  3. (realm.copyToRealmOrUpdate (학생)를 사용하여)
  4. 클래스 X에 대한 학생 목록을 가져 와서 studentList에 해당 managedObject가 포함되어 있는지 확인합니다.
  5. 그렇지 않은 경우 학생을 studentList에 추가하고 그 외에는 아무 것도하지 않았습니다.

예상대로 작동하지만 올바른 방법이 아니라는 것을 알고 있습니다. 해당 "포함"확인 (@ step4)을 생략하고 관리 대상을 realmList에 직접 추가하면 여러 항목이 realmList에 표시되기 시작합니다.

이 시나리오를 처리하는 가장 좋은 방법은 무엇입니까?

또 다른 문제는 각 클래스 아래에 'n'개의 클래스와 'x'섹션이 있습니다. 병렬로 nx 요청을 만들고 있는데 asyncExecutions nx 배를 시작하려고하면 풀 크기 제한 예외가 발생하며 UI가 3-5 초 동안 응답하지 않으면 UI 스레드에서이를 실행할 수 없습니다 (while 각 학생 목록의 루프가 각 학생의 executeTransaction과 함께 실행됩니다.)

어떤 도움이나 제안이라도 대단히 감사하겠습니다.

미리 감사드립니다. 건배!

+0

'여러 항목이 realmList에 표시되기 시작합니다. 이 시나리오를 처리하는 가장 좋은 방법은 무엇입니까?''@ PrimaryKey'가 있습니까? – EpicPandaForce

+0

또한 각 학생마다 거래를 실행하지 마십시오. 왜 그렇게하는지 확신 할 수 없습니다. – EpicPandaForce

+0

@EpicPandaForce 예 각 학생 개체에 대한 기본 키가 있고 더 명확히하기 위해 student x에 대한 단일 개체 만 있지만 studentList.contains (studentX) 단계를 건너 뛰면 studentList에 studentX에 대한 여러 항목이 있습니다. StudentX에 studentX를 추가합니다. – AndoAiron

답변

0

접근 방식은 나에게 좋을 것 같습니다. 당신이 이해해야 할 한 가지 realmList 업데이트를위한 copyToRealmOrUpdate()기본 키과 같은 항목에 대한 데이터를 복제하지 않습니다.

+0

예 copyToRealmOrUpdate()의 개념을 이해합니다. 그렇습니다. 각 학생 객체에 대한 기본 키가 있으며, 더 명확히하기 위해 student for x에 대해 하나의 객체 만 있지만 studentList에는 studentX에 대한 여러 항목이 있습니다. if StudentList에 studentX를 추가하기 전에 studentList.contains (studentX) 단계를 건너 뜁니다. – AndoAiron

+0

이 올바른지 알려 드리겠습니다 - studentX 및 기타에 대한 수많은 항목이 들어있는 studentList가 있습니다. 이제 studentList.contains (studentX)로 목록에서 studentX를 분리하고 studentX를 업데이트하려고한다고 가정합니다. 그렇지? –

+0

나는 정확하게 당신을 얻지 못했습니다. 내가 원하는 것은 목록에없는 경우 studentList에 학생을 추가하거나 목록에 이미있는 학생의 정보를 업데이트하는 것입니다. StudentList에 학생이 이미 있거나 학생 목록이 있고 copyToRealmOrUpdate (unManagedStudent)를 수행하면 정보가 업데이트되고 완료해야합니다. StudentList에 해당 학생이 없다면 copyManagementStudent를 realmList에 추가하는 한 단계 더 나아가 copyToRealmOrUpdate (unManagedStudent)를 수행해야합니다. – AndoAiron