Ios 在一个项目中有两个领域的数据库并将其合并

Ios 在一个项目中有两个领域的数据库并将其合并,ios,xamarin,realm,Ios,Xamarin,Realm,我的应用程序有两种类型的用户,付费用户和免费用户。 对于免费用户,我不提供他们在我的应用程序中创建的任何数据备份,因此此领域数据库实例(如db1)不同步。 对于付费用户,我正在验证备份,这里我使用的是同步领域数据库(比如db2) 这里的条件是,当用户希望成为付费用户时,如何同步先前脱机领域数据库中可用的数据。如何将此db1合并到db2中 另外,我正在用Db(视频和图像)编写大量数据。我更喜欢异步写入和读取。 (我尝试了writeAsync方法,但它给出了异常) 如有任何提示,将不胜感激 下面的代

我的应用程序有两种类型的用户,付费用户和免费用户。 对于免费用户,我不提供他们在我的应用程序中创建的任何数据备份,因此此领域数据库实例(如db1)不同步。 对于付费用户,我正在验证备份,这里我使用的是同步领域数据库(比如db2)

这里的条件是,当用户希望成为付费用户时,如何同步先前脱机领域数据库中可用的数据。如何将此db1合并到db2中

另外,我正在用Db(视频和图像)编写大量数据。我更喜欢异步写入和读取。 (我尝试了writeAsync方法,但它给出了异常) 如有任何提示,将不胜感激

下面的代码表示从错误的线程访问了域

public async Task InsertItemInDB(Post model)
        {
            try
            {
                //realm.Write(() =>
                //   {

                //     realm.Add(model);

                //   });
                var realm = Realm.GetInstance(Config);
                await realm.WriteAsync( (Realm obj) => {


                    realm.Add(model, true);
                });
            }
            catch(Exception ex){

                Console.WriteLine("problem writing to DB" + ex);
            }
        }

启动
WriteAsync
块时,必须使用传递到lamb块中的
Realm
实例,否则将得到无效的线程异常

您的代码应该是:

await realm.WriteAsync( (Realm obj) => {
    // Use the Realm instance that was passed in, i.e. `Realm obj`
    obj.Add(model, true);
});

1) 您可以使用
Json
从每个领域数据库导出/导入,但不能同时打开两个数据库。。。2)
写一大堆数据
。。。当心16MB/字节数组的限制,我个人完全避免在领域内存储二进制资产,因为内存需求成为一个大问题,特别是在iOS上,就您得到的
异常而言,我们可能需要引发异常和实际异常的代码。是的,因为16MB的限制,我不得不将视频长度限制在7秒。我的客户确信媒体会进入Db,我不能说别的话来说服他。他想要备份所有数据,你有什么建议吗?你可以使用
Realm的移动平台
同步用户数据库。。。简单和预建选项。否则,您将不得不以某种方式序列化数据,并将其上载到服务器,然后通过某种类型的用户id将其存储在服务器上,并添加在数据库中下载还原数据的功能……但我仍然无法获得大于16 Mb的视频,对吗?在对整个项目了解有限的情况下,很难推荐解决方案,但是,如果我正在开发的话,创建原型并使用严格的MVVM/VIPER体系结构,这样您就可以选择替换不同的存储容器和/或在对象存储和基于文件的缓存之间拆分数据模型,并为用户数据提供不同的同步方法,这将是一个起点……您能告诉我,两者之间的区别吗,obj.Add(model,true)&obj.Add(model,false)同时,我正在尝试这一方法。对于您指定了[PrimaryKey]的对象,您可以在realm中传入更新:true。Add可添加传入对象或更新现有对象:第一次添加时应为false!好啊