どうやら、問題は解決するのが本当に簡単だったようです。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 シミュレーターでアプリの Caches フォルダーを調べたところ、Pictures.MvvmCross フォルダーに大量のキャッシュされた画像が見つかりましたが、MvvmCross フレームワークのソース コードによると、キャッシュ エンジンに提供するエンティティのシリアル化されたリストを含む Pictures.MvvmCross_CacheIndex.txt も必要です。既存の画像ファイルのリストをロードする方法。シリアライザが見つからないため、このリスト ファイルは作成されませんでした。そのため、次のアプリケーションの再起動時に、既存のロードされたイメージに関するすべての情報が失われました。