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,所以我不确定他是否需要检查它是否是字符串。