0
给定结构有一个属性初始化 - <String, Any>
类型的空字典:如何检查是否词典在SWIFT 3
struct Foo {
var bar:Dictionary<String, Any> = [:]
}
和结构的扩展与自定义initalizer:
extension Foo {
init(json: [String: Any]) {
if let bar = json["bar"] {
self.bar = bar as! Dictionary<String, Any>
}
}
}
我会喜欢在我的代码中进一步查看(在实例化Struct后)如果bar
我的Foo
结构中的属性没有默认的[:]
值:
let param:Dictionary<String, Any> = ["bar": 12]
let options = Foo(param)
if (options.bar != [:]) {
// ok, the bar is set - do something
}
的param
字典是用户提供的JSON对象必须具有类型<String, Any>
,因为它可以包含eiter字符串的:int或字符串:字符串值。
不幸的是,上述if
声明给了我:
Binary operator '!=' cannot be applied to operands of type 'Dictionary<String, Any>' and '[AnyHashable : Any]'
使用方法的isEmpty如果'(options.bar.isEmpty)' –