2016-07-28 1 views
0

iOS에서 Realm Swift를 사용하여 UITableViewCell과 관련된 객체를 저장하고 있습니다. 각 셀은 동적 인 높이를 가지고 있으며, 해당 높이 정보를 영역 객체에도 저장하고 싶습니다. 그러나 불행하게도, Realm 객체의 알림 블록에 셀 높이 정보를 업데이트하는 코드를 삽입 할 수 없기 때문에 무한 루프가 트리거됩니다. 다른 클래스에 추가하여 기본 객체와 일종의 외래 키 관계를 만들고 알림 블록에서 다른 객체를 업데이트하려고 할 때 무한 루프가 발생했습니다.셀과 연결된 영역 객체에 셀 높이 값을 저장하려면 어떻게합니까?

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

0

코코아의 키 값 관측과 마찬가지로, 영역의 알림은 속성을 기존 값으로 설정하더라도 개체에 대한 속성을 설정하면 개체가 수정되었음을 나타냅니다. 이것이 알림 루프를 유발할 가능성이 큽니다. 이를 방지하려면 알림 블록에서 셀 높이 속성을 개체와 동일한 값으로 설정했는지 확인할 수 있습니다. 그렇다면 속성 업데이트를 건너 뜁니다.

+0

내 문제는 개체가 업데이트되고 따라서 높이를 다시 계산해야한다는 것입니다. 즉 무한 루프를 트리거하는 addNotificationBlock에서 매우 동일한 개체의 height 속성 값을 업데이트해야한다는 뜻입니다. – dickyj

+0

왜 나는 그것이 _infinite_ 루프를 생성 할 것이라고 생각하는지 모르겠습니다. 높이 속성을 업데이트하면 다른 알림이 트리거되지만 두 번째 알림 블록이 호출 될 때 높이 계산은 개체의 다른 속성이 변경되지 않아 동일한 결과를 제공해야합니다. 동일한 결과를 계산했으며 height 속성 설정을 건너 뛰면 감지 블록에 대한 추가 호출이 한 번만 발생합니다. – bdash

+0

addNotificationBlock에서 영역을 0으로 설정하여 영역을 무효화합니다. 그런 다음 셀 레이아웃 코드에서 높이를 올바른 값으로 설정하는 영역 쓰기를 수행하여 addNotificationBlock 코드가 다시 실행되도록하고 다시 높이를 0으로 설정해야합니다. – dickyj

관련 문제