Akavache: сохраненное значение недоступно после перезапуска приложения iOS
Я использую стандартный подход Akavache на iOS (на самом деле это проект.NET Standard для Android/iOS), но проблема возникает только с iOS.
Я сохраняю некоторую ценность в течение жизненного цикла приложения:
await BlobCache.Secure.InsertObject("user", user);
А в приложении новая сессия это:
var user = await BlobCache.Secure.GetObject<UserModel>("user");
Но объект недоступен (с KeyNotFoundException
исключение).
Недавно я тоже пытался позвонить BlobCache.Secure.Flush().Wait()
сразу после сохранения объекта, но эффекта все равно нет.
Проблема возникает только с iOS. Андроид в порядке. Проблема возникает с объектами Secure и UserAccount.
Данные недоступны даже после "нежного" BlobCache.Shutdown().Wait()
на закрытие приложения. Так что даже не представляю, где искать решение сейчас.
Любые мысли, почему может вызвать эту проблему и как я могу решить ее?
2 ответа
Еще одна проблема, с которой столкнулись люди, заключается в том, что кеш SqlLite становится связанным. Если вы проверите тип в LocalMachine и он имеет тип MemoryCache, он не будет устойчивым.
Просто добавьте статический класс компоновщика где-нибудь в вашем проекте (даже если это PCL или Standard lib).
Это сработало для меня.
Вы установили ApplicationName
собственность на BlobCache
? На iOS это кажется скорее необходимостью, чем на Android.