如何解决异常"当它已经被另一个领域管理时,无法开始管理具有领域的对象#34;

时间:2017-07-20 02:46:22

标签: ios xamarin realm

我在我的Xamarin项目中使用Realm Mobile Database。我习惯于使用realm.Add(obj,update)语句时遇到了问题。抛出异常"当它已经被另一个领域管理时,无法开始管理具有领域的对象#34;。我在同样的演示中没有看到Swift版本。我知道当realm对象的IsManage是真的时,我在领域中添加了一个对象进行更新然后抛出该异常,所以我如何用一个成员更新一个领域之前存在的对象。

            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);
            });

谢谢!

2 个答案:

答案 0 :(得分:0)

看起来你正在向不同的领域开放,然后尝试将一个领域从一个领域添加到另一个领域。

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

// 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

答案 1 :(得分:0)

我最近遇到了同样的问题并设法找到了问题。

就我而言,我正在向Realm导入大量非托管对象。 其中一些对象有一个指向自定义User对象的属性,我在对象的构造函数中天真地指定它。

当然,这意味着我试图导入具有指向托管对象的属性的非托管对象(也在不同的实例中创建)。