gpt4 book ai didi

ios - akavache 不在 ios 模拟器/设备中缓存

转载 作者:行者123 更新时间:2023-11-28 20:56:32 24 4
gpt4 key购买 nike

使用 xamarin forms v.3.1 和 akavache v5 + akavache.sqlite3 v5。

在 app.xaml.cs 中我初始化了 akavache

       BlobCache.ApplicationName = "EF_Cache";
BlobCache.EnsureInitialized();

我使用 localmachine 来缓存数据

       await BlobCache.LocalMachine.InsertObject<List<int>>("FavouriteTeams", FavouriteTeam, TimeSpan.FromDays(300));

我做的是检索数据

       var FavouritesList = await BlobCache.LocalMachine.GetObject<List<int>>("FavouriteTeams");

以下代码在 android 设备上运行良好,没有问题,但是当我在 ios 设备/模拟器上尝试它时,它没有错误地失败,getobject<> 只是在重新启动应用程序时返回 null。

在 ios 应用程序的属性或 info.plist 中是否缺少任何东西或应该配置额外的东西。

最佳答案

可能发生的情况是,用于保存到本地计算机的 Akavache 库被链接器“优化掉”。

基本上,这意味着编译器看不到从您的 iOS 项目到将某些内容保存到光盘所需的 DLL 的直接引用,并将其删除作为优化。 Akavache 处理它的方式是静默地返回内存模式。

要解决这个问题,您需要包含一个类,该类对程序集中的类进行一些虚拟代码引用,否则这些类将被“链接出”。您可以在 projects' GitHub 上找到它以及更多信息.

将这个类添加到你的iOS项目中,最好也将它添加到你的Android项目中。

public static class LinkerPreserve
{
static LinkerPreserve()
{
var persistentName = typeof(SQLitePersistentBlobCache).FullName;
var encryptedName = typeof(SQLiteEncryptedBlobCache).FullName;
}
}

加上这个之后,问题应该就解决了。

关于ios - akavache 不在 ios 模拟器/设备中缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51746016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com