繁体   English   中英

如何异常解决:“如果对象已由另一个领域管理,则无法开始管理该领域的对象”

[英]How to resolve with a exception “Cannot start to manage an object with a realm when it's already managed by another realm”

我在Xamarin项目中使用Realm Mobile Database。 当我使用realm.Add(obj,update)语句时,我遇到了一个问题。 它引发异常“当已经由另一个领域管理的对象时,无法开始管理该对象”。 我在同一演示中的Swift版本上没有看到的内容。 我知道领域对象的IsManage为true的时候,然后将领域中存在的对象添加到另一个对象中以进行更新,然后抛出该异常,因此如何使用成员之前存在的成员来更新领域对象。

            var objUpdate = new AccountAccessDB()
            {
                Id = this.Id, //Id is PrimaryKey
                User = this.User // this object existed
            }; 
            objUpdate.something.Add(new Object()) // this is that I want to update.

            realm.Write(() => {
                realm.Add(objUpdate, true);
            });

谢谢!

看起来您正在打开不同的领域,然后尝试将一个对象从一个领域添加到另一个领域。

请记住,领域是通过其配置来唯一的,因此,如果在打开领域时通过配置,则在尝试打开同一领域时必须使用相同的配置。

// First time you open realm
var realm = Realm.GetInstance("my.realm");
...

// Somewhere else in your code
var realm = Realm.GetInstance(); // <== This is not the same realm!
var myRealm = Realm.GetInstance("my.realm"); // <== This is the same realm

我最近遇到了同一问题,并设法找到了问题。

就我而言,我正在将大量非托管对象导入Realm。 这些对象中的某些对象具有指向自定义User对象的属性,我是在该对象的构造函数中天真地为其分配的。

自然地,这意味着我试图导入具有指向托管对象的属性的非托管对象(也创建于另一个实例中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM