gpt4 book ai didi

ios - Xamarin.Forms 中的 Newtonsoft.Json 动态异常 - 仅在 IOS/Device/Release 中

转载 作者:行者123 更新时间:2023-12-01 19:36:33 25 4
gpt4 key购买 nike

我的 Xamarin.Forms 应用程序引发异常:

Microsoft.CSharp.Runtime-Binder.RuntimeBinderException: Cannot apply indexing with [] to an expression of type "Newtonsoft.Json.Linq.Jobject"



这只发生在设备上安装的 iOS 版本中(通过我设备上的 Xamarin 或客户从 Apple Store 安装)。它在 Android 上运行良好(相同的代码!),也在 iOS 模拟器上进行了测试,包括调试和发布 - 运行良好。

代码在这里(第 2 行抛出):

dynamic json = JObject.Parse(message);
long time = (long)(json["timestamp"]);

任何的想法?也许某些 Release模式优化器会删除不应该删除的东西?

谢谢

最佳答案

来自 Xamarin.iOS documentation

Since the iOS kernel prevents an application from generating code dynamically, Xamarin.iOS does not support any form of dynamic code generation.



根据 this blog entry这包括使用 dynamic类型。出于原因(对于此答案的范围不一定重要)。

它在模拟器上运行的原因是模拟器实际上并不运行 iOS(不是模拟器),而是放在允许动态代码生成的 macOS 之上的 GUI 层。

但是, JObject defines an indexer访问 JSON 字符串中包含的值,因此您不需要 dynamic完全可以,但可以用 var 替换它在给定的上下文中

var json = JObject.Parse(message);
long time = (long)(json["timestamp"]);

这样你的 json变量是静态类型的 JObject ,这是在编译时解决的,因此在 iOS 上没有动态代码生成失败。

关于ios - Xamarin.Forms 中的 Newtonsoft.Json 动态异常 - 仅在 IOS/Device/Release 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949625/

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