我正在尝试创建一个使用mvvmcross框架的iOS项目。我已经获得了适用于Windows的项目,并且我试图让它在iOS上运行。当我运行代码时,我遇到了一个看似基本的问题,但似乎无法弄清楚。
以下是代码
public Models.Config GetAppConfig()
{
var configResourceLoaded = Mvx.Resolve<IMvxResourceLoader>();
string configText = string.Empty;
try
{
configText = configResourceLoaded.GetTextResource("Assets/AppData/Config.json");
}
catch (Exception noFile) {
string f = "ff";
f = f + "ff";
}
var serializer = Mvx.Resolve<IMvxJsonConverter>();
return serializer.DeserializeObject<Models.Config>(configText);
}
行configText = configResourceLoaded.GetTextResource("Assets/AppData/Config.json");
会导致代码抛出异常"Cannot load resource "Assets/AppData/Config.json""
。
我在iOS项目中包含了该文件夹结构(Windows项目中存在类似的文件夹结构)。
我已尝试将Config.json文件的构建操作设置为“内容”和“内容”。和&#39; BundleResource&#39;但它仍然无法奏效。
另外,在我的Setup.cs中,要注册IMvxResourceLoader
我有以下代码。
Mvx.RegisterType<IMvxResourceLoader, MvxTouchResourceLoader>();
关于我做错的任何想法?为什么不加载文件?
答案 0 :(得分:0)
IMvxResourceLoader
使用IMvxFileStore
。查看您使用的方法FullPath
。仔细观察it looks like this:
public const string ResScheme = "res:";
protected override string FullPath(string path)
{
if (path.StartsWith(ResScheme))
return path.Substring(ResScheme.Length);
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), path);
}
因此,除非您在res:
之前添加路径,否则预计您正在查看MyDocuments
。
将您的路径更改为:
res:/Assets/AppData/Config.json