sak*_*mar 1 linq realm xamarin realm-mobile-platform
请放心,我已经看到了同样问题的所有答案.在此链接后面输入switch-from-local-to-synced-realm
我有一个本地领域,我想从哪里复制到同步领域.
public void InitiateSyncForPost()
{
realm = Realm.GetInstance(ConfigForSync);
//realm.WriteAsync((Realm obj) =>
//{
// var realmOld = Realm.GetInstance(Config);
// var ding = realmOld.All<Post>().ToList();
// var dang = realmOld.All<Comment>().ToList();
// var ting = realmOld.All<ImageData>().ToList();
// foreach (var t in dang)
// {
// obj.Add(t, false);
// }
// foreach (var t in ding)
// {
// obj.Add(t, false);
// }
//foreach (var t in ting)
// {
// obj.Add(t, false);
// }
//});
realm.Write(() => {
var realmOld = Realm.GetInstance(Config);
var ding = realmOld.All<Post>().ToList();
var dang = realmOld.All<Comment>().ToList();
var ting = realmOld.All<ImageData>().ToList();
realmOld.Dispose();
foreach (var t in ting)
{
realm.Add(t, true);
}
foreach (var t in dang)
{
realm.Add(t, true);
}
foreach (var t in ding)
{
realm.Add(t, true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我尝试了异步写入和写入方法.两个都给我例外
当我使用WriteAsync时,
我得到异常,例如条件不符合数组长度== 1(不要记得)
当我使用当前代码时,我收到此异常
Realms.Exceptions.RealmObjectManagedByAnotherRealmException:当它已经被另一个领域管理时,无法开始管理具有领域的对象
我在将对象从本地域复制到同步域时有什么不对吗?
您需要创建一个非托管的副本RealmObject
subsclass 之前将其添加到新的境界.
您可以手动或通过帮助程序扩展来执行此操作.
NonManagedCopy
扩展:RealmJson.Extensions
var nonSyncedRealm = Realm.GetInstance(nonSyncedRealmConfig);
var syncedRealm = Realm.GetInstance(syncedRealmConfig);
var nonSyncedAll = nonSyncedRealm.All<ARealmClass>();
syncedRealm.Write(() =>
{
foreach (var realmObject in nonSyncedAll)
{
var syncedObject = realmObject.NonManagedCopy<ARealmClass>();
syncedRealm.Add(syncedObject, true);
}
});
Run Code Online (Sandbox Code Playgroud)
将RealmObject子类的每个属性分配给新实例化的非托管对象.
syncedRealm.Write(() =>
{
foreach (var realmObject in nonSyncedAll)
{
var syncedObject = new ARealmClass
{
Id = realmObject.Id,
Name = realmObject.Name,
~~~~~~
~~~~~~
~~~~~~
~~~~~~
};
syncedRealm.Add(syncedObject, true);
}
});
Run Code Online (Sandbox Code Playgroud)
(1)免责声明RealmJson.Extensions
是我写的扩展,可通过nuget包或源代码获得:
re:https://sushihangover.github.io/Realm.Json.Extensions/