问题标签 [encodable]

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.

0 投票
1 回答
221 浏览

swift - 如何在 Swift Xcode 中编码 NSSet?

我知道在解码时该怎么做,如下所述,但是我将如何进行编码呢?

只需要查看weatherDetail: NSSet我删除了其他容器,因为示例不需要。

在这里我做错了,但想知道我怎么能解决这个问题。

0 投票
1 回答
263 浏览

swift - 将类编码为单个值而不是字典 swift

给定课程:

我想得到:

不是

这是默认设置。我知道我可以在 MasterClass 中抛出编码函数和 CodingKeys,但我还有 20 个其他变量,我应该添加 19 个额外的键。我可以在 ComplementApp 中实现这个实现 CodingKeys 吗?

0 投票
2 回答
2115 浏览

swift - 具有通用属性的结构符合 Swift 中的 Encodable

我一直在寻找一种在结构中具有通用属性的方法,该属性在运行时定义类型,例如:

一个可能有用的简单用例是在构建json对象时。Anode可以是int, string, bool, 数组等,但除了可以改变的类型之外,对象node保持不变。

经过一番思考并使用失败protocols(得到通常的protocol 'X' can only be used as a generic constraint because it has Self or associated type requirements错误)后,我想出了 2 个不同的解决方案,#0 usingtype erasure和 #1 using type-erasureand generics

#0(类型擦除)

#1(类型擦除+泛型)

两种方法都给出了适当的结果:

即使结果相同,我坚信scalable如果考虑到更多类型,方法#1 更适用,但是对于添加的每种类型,仍然需要在 2 个不同的区域进行更改。

我确信有更好的方法来实现这一点,但还没有找到它。很高兴听到有关它的任何想法或建议。


编辑 #0 2020/02/08:可选值

使用 Rob 的最佳答案,我现在尝试允许value像这样可选:

此时,T无法再推断,并抛出以下错误:

Optional如果给定类型,我正在寻找一种可能性,使用 Rob 的答案给出以下结果value

编辑#1 2020/02/08:解决方案

好吧,我非常专注于给出我没有意识到没有任何类型导致推理错误的value值。nilnil

提供可选类型使其工作:

0 投票
0 回答
106 浏览

swift - 调用 Codable 编码函数的默认实现

给定班级:

我想调用编码函数的默认实现,但完整的情况是一个无限循环。我不想创建 CodingKeys,有什么办法吗?或者也许复制默认实现:/。

0 投票
3 回答
3322 浏览

swift - Swift 可编码、可解码与可编码

在 Apple doc中发现,该Codable协议由Encodable和组成Decodable。因此,

现在,假设我在下面的类中实现,

X那么,类、Y和之间是否有任何功能差异Z

如果没有尊重,为什么我们不能&在 的地方使用,

0 投票
1 回答
1277 浏览

swift - 类型需要符合 Encodable 协议,即使它已经是

错误:

实例方法 'encodeIfPresent(_:forKey:)' 要求 '[RelatedQuestions].Type' 符合 'Encodable'

我拥有的对象已经符合Codable协议,但它仍然给我它不符合的错误。为什么?

这是符合的模型之一Codable

我清理了构建文件夹重新启动了 Xcode。同样的问题。我做错了什么??

0 投票
0 回答
241 浏览

ios - 使用 init 实例化 UIViewController(来自解码器:解码器)

我需要将用户创建的 ViewControllers 存储到一个 json 文件中,我需要稍后在同一设备或不同设备上重新创建它们。

ViewController 在情节提要中可用,但我无法在 init(来自解码器:解码器)函数中正确实例化它们。

这是要保存和恢复的 ViewController。

这是我从 json 文件加载控制器并尝试重新创建它的地方。

运行此代码,我收到以下错误:

据我了解,此错误是因为尚未从情节提要中加载控制器。

问题是如何在 init(from decoder: Decoder) 函数中从情节提要中正确初始化 ViewController?

0 投票
2 回答
319 浏览

swift - 如何在 Encodable(Swift) 中添加动态键名和值?

我有一个非常简单的要求:

我正在尝试将此请求添加为Encodable. 现在,问题出现了,key名称可以是“123”、“311”之类的任何东西,键的类型是String,但它的名称是动态的。如何在 Encodable 中添加动态名称?

我尝试使用泛型,但没有奏效。有人知道吗?

0 投票
2 回答
282 浏览

ios - 使结构可编码的问题

我有Application2 个变量的协议。而且我有component一个结构,它有一个变量,它确认Application协议。我需要将其保存struct在磁盘中。所以我正在确认它的Codable协议。这样做时,我遇到了这样的错误,

“协议类型‘应用程序’不能符合‘可解码’,因为只有具体类型才能符合协议”

这是我的代码,

我是 swift 新手,如果我遗漏了一些非常明显的东西,我很抱歉。我无法解决这个问题,我需要一些正确方向的帮助。先感谢您。

0 投票
2 回答
1056 浏览

swift - 在 Swift 5 中解码枚举 - 这不可能这么难

在过去的 3-4 个小时里,我一直在尝试让这个愚蠢的东西正确解码这个枚举,现在对此感到非常沮丧!我有一个json从 API 返回的字符串,如下所示:

我正在尝试将其映射到一个名为ContractType. 这是我的整个ContractType枚举

这是我的扩展,我试图使其符合Codable协议。

我到底做错了什么!?任何帮助将不胜感激!