我正在尝试使用Xamarin
和Realm
创建移动应用。我试图从服务器中提取数据并将其加载到由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到您的主应用程序。
答案 0 :(得分:1)
从此处的文档中添加注释
https://realm.io/docs/xamarin/latest/
<{3>} 下的
PCL用户的重要提示 - 这可以通过Getting Started - Prerequisites运行。您 必须将Realm NuGet包安装到每个使用Realm的PCL中 以及您的每个平台特定项目,例如:您的最终项目 适用于iOS和Android的应用。如果您使用的是共享项目,则只能使用 必须将NuGet安装到每个特定于平台的项目中。