Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 检查字典中值的更好方法_Swift_Swift2 - Fatal编程技术网

Swift 检查字典中值的更好方法

Swift 检查字典中值的更好方法,swift,swift2,Swift,Swift2,我目前被安排在一个项目中,该项目有一些可怕的代码片段,用于检查字典中的特定值: guard let userDictionary = Locksmith.loadDataForUserAccount("asdf"), _ = userDictionary["baseUrl"] as? String, _ = userDictionary["refreshToken"] as? String, _ = userDictionary["oauthCode"] as? String, _ = user

我目前被安排在一个项目中,该项目有一些可怕的代码片段,用于检查字典中的特定值:

guard let userDictionary = Locksmith.loadDataForUserAccount("asdf"), _ = userDictionary["baseUrl"] as? String, _ = userDictionary["refreshToken"] as? String, _ = userDictionary["oauthCode"] as? String, _ = userDictionary["oauthKey"] as? String else { return false }
return true
有没有更好的方法来做到这一点,比如使用类似于
contains

如果您只想知道字典是否包含键列表,可以这样测试:

Set(d.keys).isSupersetOf(["hey", "ho"])

但是,如果您想知道,对于每个键,对应的值是否属于特定类型,而不是字典的值类型(即,它需要强制转换),那么您执行该操作的方式是唯一好的方式。

您想知道“baseURL”键是否存在并具有字符串值,还是仅仅知道它是否存在?另外,这是Swift字典还是NSDictionary?不是这个问题的答案,但您可能应该有一个
User
model对象,该对象将这些值作为可选值,然后从那里开始。@matt这是一个很好的观点。我还不知道-这是一个现有应用程序的一部分,需要移交给Swift2,所以我不确定他是否需要检查它是否是
字符串。