问题标签 [codable]
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.
swift - Swift 4 Decodable - 以枚举为键的字典
我的数据结构有一个枚举作为键,我希望下面的内容能够自动解码。这是一个错误还是一些配置问题?
我得到的错误是这个,似乎将字典与数组混淆了。
typeMismatch(Swift.Array, Swift.DecodingError.Context(codingPath: [Optional(__lldb_expr_85.AStruct.(CodingKeys in _0E2FD0A9B523101D0DCD67578F72D1DD).dictionary)], debugDescription: "预期解码 Array 但找到了字典。"))
ios - 用 Swift 4 编写的 Pod
我有个问题,
我可以在 Swift 4 和 Xcode 9 中编写一个像 Cocoapods pod 这样的库,然后在用 Swift 3 或更早版本编写的旧项目中使用它吗?
例如,它会有一个使用新Codable
协议的类。那个班级会在旧项目中工作吗?
谢谢你的帮助。
swift - 可解码 - 继承防止解码器初始化合成
我有以下 Swift 4Codable
类,它继承自 Realm 的 Object 类型:
这里的期望是该init(from decoder: Decoder)
方法被合成,这样我就不必自己实现它,这是一个巨大的便利。但是,不执行此操作会产生以下编译器错误:
super.init isn't called on all paths before returning from initializer
有三种方法可以消除编译器错误,但没有一个是好的:
实现一个空
init(from decoder: Decoder)
方法,它只调用super.init()
. 这似乎阻止了合成,这意味着实际上没有任何东西被解码,因为它只是一个空方法。手动实现整个
init(from decoder: Decoder)
方法。这行得通,但现在使用的乐趣Codable
几乎消失了。删除所有与 Realm 相关的代码。现在 Codable 可以按预期工作,但是,现在我不能再使用 Realm 了。
这对我来说似乎是一个 Swift 错误,因为它应该检测到init(from decoder: Decoder)
实际上正在实现,而不是手动实现。
有什么我不知道的建议或解决方法吗?
json - 如何将(Swift4)初始化添加到可解码协议
我正在尝试创建一个Codable 扩展,该扩展能够仅使用 json 字符串初始化可解码(Swift 4)对象。所以应该工作的是:
我认为这意味着我应该创建一个使用解码器调用 self.init 的 init。这是我想出的代码:
该代码能够获取解码器,但在调用 init 时出现编译器错误。我得到的错误是:
'self' 在 self.init 调用之前使用
这是否意味着无法在 Decodable 协议中添加 init ?
有关完整的源代码,请参见github 上的可编码扩展
更新:
从@appzYourLive 调试以下解决方案后,我发现我与可init(json:
解码和数组上的初始化程序发生冲突。我刚刚在 GitHub 上发布了一个新版本的扩展。我还添加了解决方案作为这个问题的新答案。
swift - 如何在 swift 4 Codable 中手动解码数组?
这是我的代码。但我不知道将值设置为什么。它必须手动完成,因为实际结构比这个例子稍微复杂一些。
请问有什么帮助吗?
ios - Codable/Decodable 不是解码
有人可以帮我吗?我在此示例中使用 Playground,因此您可以将整个代码放入 Playground 并查看结果。
我发现当我删除这一行时:
它似乎工作。
(JSON 已验证)
swift - Codable/Decodable 应该用字符串解码数组
为什么名称数组不解码?
为游乐场准备,只需将其粘贴到您的游乐场
ios - 使用 JSONEncoder 对类型为 Codable 的变量进行编码
我设法让 JSON 和 plist 编码和解码工作,但只能通过直接调用特定对象上的编码/解码函数。
例如:
这很好用,没有问题。
但是,我试图获得一个仅将Codable
协议一致性作为类型并保存该对象的函数。
这会导致以下错误:
无法使用类型为“(可编码)”的参数列表调用“编码”
查看 encode 函数的定义,似乎它应该能够接受Encodable
,除非Value
是一些我不知道的奇怪类型。
json - 使用 Swift 4 的 Codable 进行类型转换
我正在使用Codable
Swift 4 中的新协议。我正在通过URLSession
. 以下是一些示例数据:
我想把它解码成这样的结构:
但我不确定如何将原始数据中的分辨率字符串转换为结构Int
中的单独属性Resolution
。我已经阅读了官方文档和一两个很好的教程,但是这些侧重于可以直接解码数据的情况,无需任何中间处理(而我需要在 处拆分字符串x
,将结果转换为Int
s 并分配它们和Resolution.x
) .y
。这个问题似乎也很相关,但是提问者想避免手动解码,而我对这种策略持开放态度(尽管我自己不确定如何去做)。
我的解码步骤如下所示:
由哪里data
提供URLSession.shared.dataTask(with: URL, completionHandler: Data?, URLResponse?, Error?) -> Void)
swift4 - 使用 Codable 将接收到的 Int 转换为 Bool 解码 JSON
我有这样的结构:
和这种格式的 JSON(用于在没有额外包装的情况下从设置中提取键的结构):
问题是我如何将“isEnabled”转换为 Bool,(从 API 获取 1 或 0)当我尝试解析响应时,我得到错误:“预期解码 Bool,但找到了一个数字。”