Ios 布尔值字典的快速优雅条件

Ios 布尔值字典的快速优雅条件,ios,swift,optional,Ios,Swift,Optional,对不起,当我写完问题的时候,我注意到它因为一个愚蠢的语法错误而不起作用。。。不管怎样,我发布这个是因为 A:我觉得很有用 B:也许人们有更好的想法 试图让事情变得更优雅一点。。。我有一个可选的[String:Bool]字典和一个字符串键。现在,在一个条件下,我想问: 我有字典吗 请求的密钥是否存在 此键的值是否为“true” 解决方案: 为什么要使用Boolean而不是Bool 这应该行得通 var topics:[String:Bool]? if topics?["Pictures"

对不起,当我写完问题的时候,我注意到它因为一个愚蠢的语法错误而不起作用。。。不管怎样,我发布这个是因为

  • A:我觉得很有用
  • B:也许人们有更好的想法
试图让事情变得更优雅一点。。。我有一个可选的
[String:Bool]
字典和一个字符串键。现在,在一个条件下,我想问:

  • 我有字典吗

  • 请求的密钥是否存在

  • 此键的值是否为“true”

解决方案:


为什么要使用
Boolean
而不是
Bool

这应该行得通

var topics:[String:Bool]?

if topics?["Pictures"] == true {
    // you have a dictionary
    // AND the requested key does exist
    // AND its value is true
}

我有时更喜欢一个更详细的习惯用法(视情况而定):

var主题:[字符串:Bool]?
让topicName=“图片”
如果让topicIsSelected=self.topics?[topicName]其中topicIsSelected{
//做事
}
更新:此版本的Swift 3(以上未在Swift 3中编译)读起来不太好:

var主题:[字符串:Bool]?
让topicName=“图片”
如果让topicIsSelected=self.topics?[topicName],则topicIsSelected{
//做事
}

当你只想存储一点信息时,为什么要使用字典

存储一组字符串不是更容易吗?添加要在字典中存储
true
的所有字符串。然后只需测试字符串是否包含在集合中

此外,也不需要可选的。只需使用空集而不是
nil

var topics: Set<String>
...
if topics.contains("Pictures") { ... }
var主题:设置
...
如果topics.contains(“图片”){…}

您的解决方案是正确的!请让人们知道它有一个答案。很好的解决方案,这是有效的:)我尝试了
如果主题?[“图片”]{
,但它没有编译,所以我退回到上面发布的内容。为什么编译器需要
==true
?因为
主题?[“图片”]
返回一个
Bool?
并检查可选的
Bool
如果我想这样更改,您需要编写
==true/false
:If(userFollowersArray[indexPath.row][“watcher_follower”]as!Bool==false{let dict:NSMutableDictionary=userFollowersArray[indexPath.row]as!NSMutableDictionary print(dict)dict[“watcher_follower”]=1 self.userFollowersArray[indexPath.row]=dict as!Dictionary}
var topics: Set<String>
...
if topics.contains("Pictures") { ... }