寻找一些有关如何处理我最近遇到的情况的意见。
我一直在使用Swift 4s Codable取得成功,但今天发现了我没有想到的崩溃。我正在使用的API说,它boolean
为key 返回a
manage_stock
。
我的存根结构如下:
struct Product: Codable {
var manage_stock: Bool?
}
效果很好,问题在于API 有时会 返回a string
而不是a boolean
。
因此,我的解码失败并显示:
Expected to decode Bool but found a string/data instead.
该字符串只能等于"parent"
,我希望它等于false
。
我也可以将结构更改为var manage_stock: String?
是否可以简化从API导入JSON数据的过程。但是,当然,如果我更改了此设置,我的错误将变为:
Expected to decode String but found a number instead.
有没有一种简单的方法来处理这种突变,或者我需要失去所有Codable
带来表的自动化并实现我自己的自动化init(decoder: Decoder)
。
干杯
由于您无法始终控制要使用的API,因此这是一种Codable
通过重写直接解决此问题的简单方法init(from:)
:
struct Product : Decodable {
// Properties in Swift are camelCased. You can provide the key separately from the property.
var manageStock: Bool?
private enum CodingKeys : String, CodingKey {
case manageStock = "manage_stock"
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
do {
self.manageStock = try container.decodeIfPresent(Bool.self, forKey: .manageStock)
} catch DecodingError.typeMismatch {
// There was something for the "manage_stock" key, but it wasn't a boolean value. Try a string.
if let string = try container.decodeIfPresent(String.self, forKey: .manageStock) {
// Can check for "parent" specifically if you want.
self.manageStock = false
}
}
}
}
有关更多信息,请参见编码和解码自定义类型。
本文向大家介绍string、String;int、Int32;Boolean、bool的区别相关面试题,主要包含被问及string、String;int、Int32;Boolean、bool的区别时的应答技巧和注意事项,需要的朋友参考一下 String、Int32、Boolean等都属于.Net中定义的类, 而string、int、bool相当于C#中对这些类定义的别名。 CTS。
我目前正在尝试将一个基于Solr的应用程序迁移到ElasticSearch。 我有这个lucene查询 根据我的理解,这是一个必须子句与布尔OR结合的组合: “获取名称中包含(foo和bar)或信息中包含(foo和bar)的所有文档。之后,根据条件筛选结果state=1,并增强具有图像的文档。” 我一直试图在MUST中使用bool查询,但未能将boolean或转换为MUST子句。以下是我的资料:
描述 (Description) clone( bool )方法克隆匹配的DOM Elements及其所有事件处理程序,并选择克隆。 这对于将元素及其事件的副本移动到DOM中的另一个位置非常有用。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.clone( bool ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - bool -
我遇到了一个问题,我有三个if语句,每个语句都有if String==null或String==“”,即使getText没有给出任何值,这些语句也没有激活。
问题内容: 我正在制作一个进行一些数据处理的webapp,因此经常发现自己将字符串(来自URL或文本文件)解析为Python值。 我使用的是一种类似于eval的安全版本的函数(除非它不能读取字符串,而是保留字符串): …但是,这对我来说似乎很难看。有没有更干净的方法可以做到这一点?我发现了类似这样的旧讨论,但是我想知道是否没有一种快速简单的方法(例如我不知道的库函数,还是一个聪明的单行代码?)。
我想从editText获取字符串值,所以我使用TextWatcher onTextChanged方法在我的私有string cName上设置string值。它设置并获得正确的值。 这是我的setter和getter公共类 但是当我想在其他方法中使用getter时,我总是得到私有字符串cName默认值“ggg ”,或者如果我留空,我将得到null。为什么私有字符串cName不停留在设定值上,我该如何