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") { ... }