Hej,
我尝试使用Dependency Service从本机iOS项目加载一些数据。
这是一个简单的任务,我试图想要之前保存的一些数据,但不管我做了什么总是返回null。
如果我在iOS项目中使用调试器检查值,它们永远不会为空。 很奇怪也许我错过了什么......
我的界面实施:
[assembly: Xamarin.Forms.Dependency(typeof(SaveRead))]
namespace LindeXF.iOS {
public class SaveRead : ISaveRead {
public async Task<ApplicationModel> LoadApplicationModel(string userName) {
try {
var userPath = CreatePathJson(userName);
if (File.Exists(userPath)) {
await Task.Run(() => {
using (var file = File.OpenText(userPath)) {
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
}
});
}
}
catch (Exception ex) {
throw new Exception(ex, "LoadApplicationModel()");
}
return new ApplicationModel {Username = userName};
}
}
便携式项目中的
DependencyService = Xamarin.Forms.DependencyService.Get<ISaveRead>();
var s = await ApplicationModel.DependencyService.LoadApplication(userName);
谢谢你的时间。
答案 0 :(得分:0)
有人怀疑你是从依赖服务调用方法LoadApplication
。
var s = await ApplicationModel.DependencyService.LoadApplication(userName);
和方法声明为LoadApplicationModel
。
public async Task<ApplicationModel> LoadApplicationModel(string userName) {
}
也许那就是问题?尝试使用以下代码进行通话:
var data = await DependencyService.Get<ISaveRead>()
.LoadApplicationModel(userName);
答案 1 :(得分:0)
首先反序列化文件内容并将ApplicationModel对象存储在m
中。
using (var file = File.OpenText(userPath)) {
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
}
看起来很好但不是返回m
,而是创建一个新的ApplicationModel对象并返回它。
return new ApplicationModel {Username = userName};
我认为你应该像这样返回m
(例如):
using (var file = File.OpenText(userPath)) {
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
m.Username = userName;
return m;
}