好吧,显然这个问题很容易解决。您只需要确保您的 ios 项目引用来自 MvvmCross 库集的 Cirrious.MvvmCross.Plugins.Json 库(您必须使用指向 Newtonsoft.Json.dll 的链接来构建它)。另外不要忘记在您的应用程序中注册插件。基本上,这是为您提供所有 MvxImageViewLoader 已加载图像的缓存和持久化的配置:
public class Setup : MvxTouchSetup
{
public Setup (MvxApplicationDelegate appDelegate, IMvxTouchViewPresenter presenter)
: base(appDelegate, presenter)
{
}
protected override IMvxApplication CreateApp()
{
return new YourAppClass();
}
protected override void AddPluginsLoaders(MvxLoaderPluginRegistry registry)
{
registry.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.DownloadCache.Touch.Plugin>();
registry.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.File.Touch.Plugin>();
base.AddPluginsLoaders(registry);
}
protected override void InitializeLastChance ()
{
Cirrious.MvvmCross.Plugins.DownloadCache.PluginLoader.Instance.EnsureLoaded();
Cirrious.MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded();
Cirrious.MvvmCross.Plugins.Json.PluginLoader.Instance.EnsureLoaded();
base.InitializeLastChance();
}
}
我对控制台日志行的初步观察是没有文本序列化程序是解决问题的关键。我在 iPhone Simulator 中查看了我的应用程序 Caches 文件夹,并在 Pictures.MvvmCross 文件夹中发现了大量缓存图像,但根据 MvvmCross 框架的源代码,还必须有带有序列化实体列表的 Pictures.MvvmCross_CacheIndex.txt 给缓存引擎加载现有图像文件列表的方式。由于缺少序列化程序,未创建此列表文件,因此在下一次应用程序重新启动时,有关现有加载图像的所有信息都丢失了。