c# - Realm c#:如何添加 DynamicRealmObject?
问题描述
我在 c# (VS) 中设置了领域 (v10.3.0),它与经典静态对象 (继承 RealmObject) 配合得很好。现在我需要在运行时创建一个动态对象并考虑一下。像这样 :
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 是带有标题名称的字符串 [],double_values 是带有值的二维双精度数组)
但是,我收到以下错误:
类测试不在此领域的有限类集中
我还尝试设置不同的架构版本(从 1 到 2),但没有任何改变。如果我捕捉到当前模式,它仍然拥有我之前使用的旧静态类。
有任何想法吗?
解决方案
正如此处MongoDB 社区论坛所讨论的那样,不幸的是,无法按照您的意愿以编程方式创建模式。当前的动态 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];
}
}
});
推荐阅读
- javascript - JSON 字符串运行不正常,调试问题
- compiler-errors - 编译期间 RAM 中的位翻转错误是否会导致生成的二进制文件中出现错误?
- javascript - 未捕获的类型错误:$(...).datagrid 不是函数
- python - Pycharm IDE中OpenCV中的“未指定错误。功能未实现”错误
- javascript - Phantom JS 和组件
- c# - 想要直接从对象访问类属性(字段)
- mpi - 带 Mpi 的 2D Radom Walk
- css - 如何在 asp.net 网站上正确定位谷歌地图?
- css - Tornadofx CSS 选定行
- facebook - Facebook 应用审查页面公共内容访问