Ios “如何解决例外情况”;当域为';时,无法开始管理具有域的对象;“它已经被另一个领域管理了”;

Ios “如何解决例外情况”;当域为';时,无法开始管理具有域的对象;“它已经被另一个领域管理了”;,ios,xamarin,realm,Ios,Xamarin,Realm,我在Xamarin项目中使用Realm Mobile数据库。我在使用realm.Add(obj,update)语句时遇到了一个问题。它抛出一个异常“当一个领域已经被另一个领域管理时,无法开始管理该领域的对象”。在同一个演示中,我没有在Swift版本上看到什么。我知道realm对象的IsManage何时为true,我将realm中存在的一个对象添加到另一个对象以进行更新,然后抛出该异常,因此我如何使用之前存在的成员更新realm对象 var objUpdate = new

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

            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
//第一次打开领域时
var realm=realm.GetInstance(“my.realm”);
...
//代码中的其他地方

var realm=realm.GetInstance();// 看起来您正在打开不同的领域,然后尝试将一个对象从一个领域添加到另一个领域

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

// 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
//第一次打开领域时
var realm=realm.GetInstance(“my.realm”);
...
//代码中的其他地方

var realm=realm.GetInstance();// 我最近遇到了同样的问题,并设法找到了问题所在

在我的例子中,我将大量非托管对象导入到领域。 其中一些对象有一个指向自定义用户对象的属性,这是我在对象的构造函数中天真地指定的


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

我最近遇到了相同的问题,并设法找到了问题

在我的例子中,我将大量非托管对象导入到领域。 其中一些对象有一个指向自定义用户对象的属性,这是我在对象的构造函数中天真地指定的


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

感谢您的支持,但我只在app的所有部分使用Realm.GetInstance()。只要您通过相同的配置,GetInstance应该为您提供相同的realmYes(或无)您将获得相同的领域。感谢您的支持,但我只在应用程序的所有部分使用realm.GetInstance()。GetInstance应始终为您提供相同的领域,只要您通过相同的配置(或无配置),您将获得相同的领域。您现在找到解决方案了吗?您现在找到解决方案了吗?