개요
Realm 목록은 IList<T> 를 구현하며 Realm 유형의 인스턴스를 0개 이상 포함합니다. C# List 와 마찬가지로 Realm 컬렉션 동질적입니다( 컬렉션 의 모든 객체는 동일한 유형입니다).
목록
Realm 객체에는 지원되는 모든 데이터 유형 의 목록이 포함될 수 있습니다. IList<T> 유형의 게터 전용 속성 정의하여 컬렉션 만들며, 여기서 T 은(는) 모든 데이터 유형 될 수 있습니다(다른 컬렉션 제외). 영역 객체 목록은 두 Realm 유형, 즉 포함하는 클래스와 목록의 유형 간의 대다 관계 나타냅니다.
목록은 변경 가능합니다: 쓰기 트랜잭션(write transaction) 내에서 목록의 요소를 추가하고 제거할 수 있습니다.
목록 및 null 허용 여부
데이터베이스에서 객체를 삭제하면 해당 객체가 존재했던 모든 목록에서 제거됩니다. 따라서 객체 목록에는 삭제된 객체가 포함되지 않습니다. 그러나 기본 유형 목록에는 null 값이 포함될 수 있습니다. 목록에 null 값을 허용하지 않으려면 목록 선언에 null이 아닌 유형을 사용하거나(예: IList<double?> IList<double> 사용), 목록 선언에 null이 아닌 유형을 사용하세요. 이전 스키마 유형 정의(클래스가 RealmObject 기본 클래스에서 파생됨)를 사용하거나 null 허용을 활성화하지 않은 경우, 목록에 string 또는 byte[].
중요
동기화가 지원되지 않음
로컬 전용 영역은 null 허용(선택 사항) 값 컬렉션을 지원하지만 Sync는 지원하지 않습니다.
자세한 내용은 필수 및 선택적 속성을 참조하세요.
변화 관찰하기
INotifyCollectionChanged.CollectionChanged 이벤트를 사용하여 목록의 변경 사항을 감시하고, INotifyPropertyChanged.PropertyChanged 이벤트를 사용하여 목록의 특정 속성에 대한 변경 사항을 감시할 수 있습니다.
다음 코드 예시에는 StringList라는 이름의 IList<string> 속성을 가진 클래스가 있습니다. CollectionChanged 및 PropertyChanged 이벤트 모두에 대해 이벤트 핸들러를 설정합니다.
var list = container.StringList.AsRealmCollection(); list.CollectionChanged += (sender, e) => { Console.WriteLine($"List {sender} changed: {e.Action}"); }; list.PropertyChanged += (sender, e) => { Console.WriteLine($"Property changed on {sender}: {e.PropertyName}"); };