我在我的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);
});
谢谢!
答案 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对象的属性,我在对象的构造函数中天真地指定它。
当然,这意味着我试图导入具有指向托管对象的属性的非托管对象(也在不同的实例中创建)。