Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
在版本12.2.0中进行了更改: RealmValue可以保存混合数据的列表和字典。
RealmValue数据类型是一种混合数据类型,可以表示除嵌入式对象或设立之外的任何其他有效Realm数据类型。 您可以创建类型为RealmValue的集合(列表、集和字典):
// CS0029 - Cannot implicitly convert type: RealmValue myList = new List<Inventory>(); // These are valid uses of RealmValue: var rvList = new List<RealmValue>(); var rvDict = new Dictionary<string, RealmValue>();
注意
您无法创建可为 null 的RealmValue 。 但是,如果您希望RealmValue属性包含 null 值,则可以使用特殊的RealmValue.Null属性。
创建 RealmValue 属性
以下代码演示在继承IRealmObject的类中创建RealmValue属性,然后设置和获取该属性的值:
public partial class MyRealmValueObject : IRealmObject { [] [] public Guid Id { get; set; } public RealmValue MyValue { get; set; } // A nullable RealmValue property is *not supported* // public RealmValue? NullableRealmValueNotAllowed { get; set; } private void TestRealmValue() { var obj = new MyRealmValueObject(); // set the value to null: obj.MyValue = RealmValue.Null; // or an int... obj.MyValue = 1; // or a string... obj.MyValue = "abc"; // Use RealmValueType to check the type: if (obj.MyValue.Type == RealmValueType.String) { var myString = obj.MyValue.AsString(); } }
混合集合
在版本12.2.0及更高版本中, RealmValue数据类型可以保存RealmValue元素的集合(列表或字典,但不是设立)。 您可以使用混合集合对非结构化或可变数据进行建模。 有关更多信息,请参阅定义非结构化数据。
您最多可以嵌套100级混合集合。
您可以查询混合集合属性并注册变更监听器,就像查询普通集合一样。
您可以查找并更新单个混合集合元素
不能在混合集合中存储集合或嵌入式对象。
要使用混合集合,请在数据模型中定义RealmValue类型属性。 然后,将该属性设立为列表或字典。