使用带有域的xamarin从服务器获取数据

时间:2017-03-30 19:34:03

标签: xamarin realm realm-mobile-platform

我正在尝试使用XamarinRealm创建移动应用。我试图从服务器中提取数据并将其加载到由RealmObjects扩展的对象中。

从服务器

获取数据的代码
public async void getCompanyMaster() {
    var uri = new Uri(string.Format(URL, string.Empty));

    try
    {
        getConnection();
        var response = await client.GetAsync(uri);
        if (response.IsSuccessStatusCode)
        {
            var content = await response.Content.ReadAsStringAsync();
            Company company = JsonConvert.DeserializeObject<Company>(content);

            Debug.WriteLine("Company List " );
        }
    }
    catch (Exception e)
    {
        Debug.WriteLine("Error {0}", e.Message);

    }       
}
领域模型公司

namespace DesignModel.Model.Master
{
    public class Company : RealmObject    
    {
        public string errorMessage { get; set; }
        public string status { get; set; }

        [JsonProperty(PropertyName = "companyMaster")]
        IList<CompanyMaster> companyMaster { get; }
    }
}

公司主人的领域模型

namespace DesignModel.Model.Master
{        
    public class CompanyMaster : RealmObject
    {       
        public string companyAddress { get; set; }
        public string companyId { get; set; }
        public string companyName { get; set; }

        public string companyPhoneNumber { get; set; }
    }
}

现在问题出现在getCompanyMaster函数

的后续行
Company company = JsonConvert.DeserializeObject<Company>(content);

它引发了异常

  

错误错误设置值为&#39; errorMessage&#39;上   &#39; DesignModel.Model.Master.Company&#39;

如果我不从RealmObject扩展我的课程,那么它可以正常工作,但是当我添加RealObject时,它无法正常工作。

上述方法适用于Android原生,但不知道为什么它在xamarin中不起作用。

示例json

{
  "errorMessage": "",
  "status": "Ok",
  "companyMaster": [
    {
      "companyAddress": "123 Coffee Street\nSuite 300\nRedmond, WA 98052\nUSA",
      "companyId": "cec",
      "companyName": "Contoso Entertainment Systems",
      "companyPhoneNumber": "425-555-0156"
    }]    
}

完成堆栈跟踪

  

[0:]错误Newtonsoft.Json.JsonSerializationException:错误设置   值为&#39; errorMessage&#39;在&#39; DesignModel.Model.Master.Company&#39;。 ---&GT;   System.PlatformNotSupportedException:Realm的PCL版本正在进行中   链接可能意味着您需要使用NuGet或以其他方式链接   特定于平台的Realm.dll到您的主应用程序。

1 个答案:

答案 0 :(得分:1)

从此处的文档中添加注释

https://realm.io/docs/xamarin/latest/

<{3>}

下的

  

PCL用户的重要提示 - 这可以通过Getting Started - Prerequisites运行。您   必须将Realm NuGet包安装到每个使用Realm的PCL中   以及您的每个平台特定项目,例如:您的最终项目   适用于iOS和Android的应用。如果您使用的是共享项目,则只能使用   必须将NuGet安装到每个特定于平台的项目中。