在Dictionary中测试nil值的存在

时间:2018-02-13 07:37:19

标签: swift validation dictionary

我有以下词典:

["oct": nil, 
 "jan": Optional(3666.0), 
 "nov": nil, 
 "apr": nil, 
 "sep": nil, 
 "feb": nil, 
 "jul": nil, 
 "mar": nil, 
 "dec": nil, 
 "may": nil, 
 "jun": nil, 
 "aug": nil]

我想只在任何键的任何值都不为零时才启用按钮。没有传统的循环,是否有任何功能性的“魔法”?

4 个答案:

答案 0 :(得分:3)

在字典值上使用contains(where:)

// Enable button if at least one value is not nil:
button.isEnabled = dict.values.contains(where: { $0 != nil })

或者

// Enable button if no value is nil:
button.isEnabled = !dict.values.contains(where: { $0 == nil })

答案 1 :(得分:1)

您可以使用filter检查字典中的值是否为零。

button.isEnabled = dict.filter { $1 == nil }.isEmpty

答案 2 :(得分:1)

您已经获得了类似的解决方案,但是现在就去:

dict.filter({$0.value == nil}).count != 0

答案 3 :(得分:0)

我建议遵守标准字典定义,nil值表示无密钥,并将字典声明为非可选字段([String:Double])。

在这种情况下,如果所有12个键都存在,则将启用该按钮。这比filtercontains

更有效
button.isEnabled = dict.count == 12