首页 > 解决方案 > 非泛型类型不能与类型参数一起使用 (Realm Xamarin)

问题描述

我决定为 xamarin ios 使用 Realm 数据库

我需要从 API 获得响应并从中写入数据库数据。

这是一种从 API 获取数据的方法

 public async Task<string> Logining(string email, string password)
    {
        string result;
        var client = new RestClient("http://api.xplorpal.com");
        var request = new RestRequest("/login", Method.POST);
        request.AddParameter("email", email);
        request.AddParameter("password", password);
        IRestResponse response = await client.ExecuteTaskAsync(request);
        var content = response.Content;
        if (content.Length > 100)
        {
            try
            {
                var usr = JsonConvert.DeserializeObject<List<User>>(content);
                var realm = Realm.GetInstance();
                realm.Write(() =>
                {
                    var mydog = realm.CreateObject<UserModel>();

                });

            }
            catch 
            { 
            }
            result = "Authorized";
        }
        else
        {
            result = "Auth problem" + content;
        }
        return result;
    }

在这一行,我想将数据写入领域数据库

 var realm = Realm.GetInstance();
                realm.Write(() =>
                {
                    var mydog = realm.CreateObject<UserModel>();

                });

但我得到错误

非泛型类型不能与类型参数(字符串、对象)一起使用

但我都喜欢在文档中

领域文档

我该如何解决?

标签: iosxamarinxamarin.iosrealm

解决方案


您正在引用一篇旧的 Realm 博客文章,并且自那时起(2016 年)API 已更改。

CreateObject您可以创建 RealmObject 子类,分配其属性,然后将其添加到您的 Realm 实例中,而不是直接使用:

var realm = Realm.GetInstance();
var mydog = new UserModel
{
   // Set your properties...
};
realm.Write(() => realm.Add(mydog));

我建议直接参考 .Net Realm 文档:

较新版本的CreateObject方法返回一个“动态”对象,并根据您提供的主键在 Realm 实例中创建一个“占位符”:

var dynObj = realm.CreateObject(typeof(UserModel).FullName, "somePIKey");

推荐阅读