Realm c#:如何添加 DynamicRealmObject?
Realm c# : How to add DynamicRealmObject?
我在 c# (VS) 中设置了领域 (v10.3.0),它与 classic static objects(继承 RealmObject)配合使用效果很好。现在我需要在运行时创建一个动态 object 并考虑某事。像这样:
RealmConfiguration config = new RealmConfiguration(realm_db_name);
config.SchemaVersion = 2;
config.ShouldDeleteIfMigrationNeeded = true;
config.IsDynamic = true;
var realm = Realm.GetInstance(config);
realm.Write(() =>
{
DynamicRealmObject tmp_obj = realm.DynamicApi.CreateObject("test", "time");
for (int min_idx = 0; min_idx < values.Length; min_idx++)
{
for (int col_idx = 0; col_idx < headers.Length - 1; col_idx++)
{
tmp_obj.DynamicApi.Set(headers[col_idx], double_values[col_idx,min_idx]);
}
realm.Add(tmp_obj);
}
});
(headers 是具有 header 名称的字符串[],double_values 是具有值的二维双精度数组)
但是,我收到以下错误:
The class test is not in the limited set of classes for this realm
我也尝试设置不同的架构版本(从 1 到 2),但没有任何改变。如果我捕捉到当前模式,它仍然保留我之前使用的旧静态 class。
有什么想法吗?
正如在 MongoDB 社区论坛 here 上讨论的那样,不幸的是,无法按照您的意愿以编程方式创建架构。当前动态 API 只能用于访问现有属性。
您尝试做的事情的替代方法可能是使用字典:
public class HeaderContainer : RealmObject
{
public IDictionary<string, double> Headers { get; }
}
// Later...
realm.Write(() =>
{
var container = realm.Add(new HeaderContainer());
for (int min_idx = 0; min_idx < values.Length; min_idx++)
{
for (int col_idx = 0; col_idx < headers.Length - 1; col_idx++)
{
container.Headers[headers[col_idx]] = double_values[col_idx,min_idx];
}
}
});
我在 c# (VS) 中设置了领域 (v10.3.0),它与 classic static objects(继承 RealmObject)配合使用效果很好。现在我需要在运行时创建一个动态 object 并考虑某事。像这样:
RealmConfiguration config = new RealmConfiguration(realm_db_name);
config.SchemaVersion = 2;
config.ShouldDeleteIfMigrationNeeded = true;
config.IsDynamic = true;
var realm = Realm.GetInstance(config);
realm.Write(() =>
{
DynamicRealmObject tmp_obj = realm.DynamicApi.CreateObject("test", "time");
for (int min_idx = 0; min_idx < values.Length; min_idx++)
{
for (int col_idx = 0; col_idx < headers.Length - 1; col_idx++)
{
tmp_obj.DynamicApi.Set(headers[col_idx], double_values[col_idx,min_idx]);
}
realm.Add(tmp_obj);
}
});
(headers 是具有 header 名称的字符串[],double_values 是具有值的二维双精度数组)
但是,我收到以下错误:
The class test is not in the limited set of classes for this realm
我也尝试设置不同的架构版本(从 1 到 2),但没有任何改变。如果我捕捉到当前模式,它仍然保留我之前使用的旧静态 class。
有什么想法吗?
正如在 MongoDB 社区论坛 here 上讨论的那样,不幸的是,无法按照您的意愿以编程方式创建架构。当前动态 API 只能用于访问现有属性。
您尝试做的事情的替代方法可能是使用字典:
public class HeaderContainer : RealmObject
{
public IDictionary<string, double> Headers { get; }
}
// Later...
realm.Write(() =>
{
var container = realm.Add(new HeaderContainer());
for (int min_idx = 0; min_idx < values.Length; min_idx++)
{
for (int col_idx = 0; col_idx < headers.Length - 1; col_idx++)
{
container.Headers[headers[col_idx]] = double_values[col_idx,min_idx];
}
}
});