问题标签 [akavache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 这种模式是否可以通过 Akavache 在 ViewModel 中加载和缓存数据并将它们绑定到 Xamarin.Forms 中的 UI?
我试图找到一些“最佳实践”示例,如何在现实场景中使用 Xamarin.Forms、ReactiveUI 和 Akavache。假设有一个代表客户详细信息的简单页面。它应该在激活(导航到)时从服务器检索数据。我喜欢 Akavache 的 GetAndFetchLatest 扩展方法的想法,所以我想使用它。
我最终得到了这样的结果:
DTO
查看绑定
但我认为这不是 100% 防弹的。这有一些可能的问题:
- 当我想在激活时加载数据时可以调用视图
this.ViewModel?.GetDataCommand.Execute().Subscribe();
吗?this.WhenActivated(d => ...)
- 绑定到
CustomerDetail.Description
会导致NullReferenceException
我是对的吗?或者它安全吗? - 我想做一些类似的事情:“如果有
CustomerDetail
,显示CustomerDetail.Name
。当它还没有加载时,显示Customer.Name
”。因为它,我需要在 ViewModel 上创建特定的属性吗? - 如何指示加载?
- 我在这里错过了一些重要的事情吗?我还有其他一些问题吗?
serialization - Akavache 不存储/返回 NodaTime LocalDateTime
我需要将 NodaTime LocalDateTime 存储在 Akavache 缓存中。
我创建了一个简单的应用程序,它采用以下类并将其存储/从 Akavache 缓存中检索:
当它存储在缓存中并从缓存中检索时,尚未填充StartDateTimeLocal属性。
Akavache 似乎不知道如何序列化/反序列化 LocalDateTime。
是否可以向 Akavache 注册类型或为未知类型提供自定义序列化?
控制台应用程序来演示它:
测试模型类:
我在演示问题的控制台应用程序中添加了带有上述内容的Git 存储库。
xamarin.forms - 夏令时没有坚持
如果我将夏令时日期放入缓存中,那么它会在没有应用夏令时的情况下出现。
例如 14:00+1 (15:00) 从缓存中返回为 14:00。
在非夏季时间,没有问题。
我在 GitHub 上提出了一个问题,一周内没有答案。
有任何想法吗?
c# - 从 Akavache 获取 JSON 字符串
我的 Xamarin 应用程序有一些带有 Akavache 的缓存对象。出于测试目的,我试图以原始 JSON 字符串格式获取缓存数据。我尝试了以下方法,但得到了一个奇怪的字符串:
Debug.WriteLine 只会打印一个问号,但检查值我可以看到部分 JSON:
sqlite - 在 Xamarin Forms 项目中使用 Akavache 数据库
使用 Visual Studio 2019 Xamarin Forms 4.2 .Net Standard 2.0 框架
我正在开发一个 Xamarin Forms 项目,在该项目中我使用 Akavache 对数据进行一些缓存,效果很好,但我也想使用 Akavache 创建的同一个数据库将一些数据保存到我自己的表中。有人可以指导我一些可以告诉我如何做到这一点的代码吗?我想要一个基于可以执行 CRUD 操作的类模型创建的表。
谢谢,凯
sqlite - 访问 Akavache DatabasePath 值
在我的项目中,我试图使用我的 Akavache 对象中的 DatabasePath 值。奇怪的是,我似乎只能在调试模式下查看和访问 DatabasePath 属性值。
我不明白我做错了什么。当项目未运行时,我似乎无法查看或访问 Akavache 对象中的 DatabasePath 属性,因此我可以将值分配给代码中的变量。有人可以帮我解开这个谜吗?我希望我附上的图片是有意义的。
问候, 凯
listview - Xamarin.Form 问题(如果从 Akavache 缓存绑定,ListView 不会刷新)
我遇到了刷新列表的问题。
我MasterDetailPage
在 Visual Studio 2019 (Xamarin.Forms 4.3.0.991250) 和 Akavache 6.6.1 中使用 init default,变量是 Items of type ObservableCollection<TodoItem>
。
首先,我将一个项目添加到缓存中(我称这个对象为 TodoItem)。然后显示 ListView 与从 Akavache 缓存获取的 Items 绑定,但它不起作用,Items 有值 ->ListView
不刷新。
我尝试了一些东西:
更改版本(Xamarin.Forms 和 Akavache),例如:XF 4.1 最高版本和 akavache 降级 6.0、6.1、6.2... => 不工作。
如果使用硬编码 new ObservableCollection(new ListView(){ ... }) => 设置项目,它正在工作。
如果应用程序正在运行,我会更改布局上的某些内容并保存(Xaml 热重载)-> 它正在工作。
公共 ObservableCollection 项目 { 获取;放; } = 新的 ObservableCollection();
/li>
prism - Akavache 初始化并在 Prism 中为 DI 注册一个常量
我正在使用 Akavache 并想注册常量 BlobCache.LocalMachine ,这样当我在我的视图模型的构造函数中注入 IBlobCache 时,它只会将其拾取。
我相信 Ninject 等价物是:
我想做的事:
最后,当我“注销”我的应用程序时,我看到了相互矛盾的信息。是正确的顺序:
或者
xamarin.forms - 之前使用 Akavache 时未正确显示第一个视图
如果我在显示我的第一个视图之前从缓存中获取一个对象,那么应用程序将只显示一个空白页(在 Android 上,没有测试其他平台)。如果我锁定屏幕并解锁它,那么我的视图就会显示出来。重现非常简单:
- 创建新的 Xamarin.Forms 应用(我为此示例选择了选项卡式布局)。
- 将 akavache nuget 包添加到所有项目。
- 中
App.xaml.cs
,在设置属性之前初始化akavache并获取一个对象MainPage
。 - 启动应用程序 - 将是完全白屏。
- 锁屏,解锁-界面将显示。这部分似乎只适用于我的实体手机,而不是模拟器。
App.xaml.cs
这是一个将重现该问题的示例。
那么这里发生了什么,更重要的是 - 是否有解决方案或解决方法?
c# - 使用 Akavache 在 Xamarin.iOS 中读取缓存失败
在一个跨平台项目中,我们使用 Akavache 作为我们的缓存。目标是 .Net Standard 2.1,我们使用 6.10.20 版本。
我们只需使用以下内容进行编写:
await cache.InsertObject(userIDKey, userID);
阅读:
await cache.GetObject<Guid>(userIDKey);
它适用于Xamarin.Android,用于阅读和写作。
不幸的是,我们只能在Xamarin.iOS中写入(缓存确实包含该项目)。
当我们尝试读取它时,会出现以下异常:
此平台不支持操作。
Stacktrace:在 System.Reflection.Emit.DynamicMethod..ctor(System.String 名称,System.Reflection.MethodAttributes 属性,System.Reflection.CallingConventions callingConvention,System.Type returnType,System.Type[] parameterTypes,System.Type 所有者, System.Boolean skipVisibility) [0x00006] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/mcs/class/corlib/System.Reflection.Emit/DynamicMethod.notsupported.cs:74 \ n 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder.BuildTypeNoCache (Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite callSite) [0x00038] 在 :0 \n 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder.BuildType (Microsoft.Extensions. DependencyInjection.ServiceLookup.ServiceCallSite callSite) [0x00055] in :0 \n 在 Microsoft。Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder.Build (Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite callSite) [0x00039] 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CompiledServiceProviderEngine.RealizeService (Microsoft.Extensions.DependencyInjection.ServiceLookup. ServiceCallSite callSite) [0x00006] in :0 \n 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>n__0 (Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite callSite) [0x00000] in :0 \n 在 Microsoft.Extensions。 DependencyInjection.ServiceLookup.DynamicServiceProviderEngine+<>c__DisplayClass1_0.b__1 () [0x00000] in :0 \n 在 System.Threading.Tasks.Task`1[TResult].InnerInvoke () [0x0000f] 在 /Library/Frameworks/Xamarin.iOS。framework/Versions/Current/src/Xamarin.iOS/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/Future.cs:534 \n 在 System.Threading.Tasks.Task.Execute ( ) [0x00000] 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs:第2319章
我们使用以下环境:
- 操作系统:iOS 13.5
- 设备:模拟器 11.5
- Xamarin:16.6.000.1062 (d16-6@41e1f0e)
- Xamarin.iOS 和 Xamarin.Mac SDK 13.18.2.1 (29c4ea7)
很奇怪,编写工作但同一个对象无法检索数据。
什么可能导致这种情况?