2015-10-07 2 views
1

я в настоящее время положить в проект, который имеет некоторый звериную фрагмент кода, который проверяет определенные значения в словаре:Лучший способ проверить словарь для значений

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?

+0

Вы хотите знать, существует ли ключ «baseURL» и имеет значение String или просто оно существует? Кроме того, это словарь Swift или NSDictionary? – matt

+0

Не ответ на этот вопрос, но вы, вероятно, должны иметь объект модели User, который имеет эти значения как дополнительные, а затем перейти оттуда. –

+0

@matt хороший пункт. Я еще не знаю - это часть существующего приложения, которое должно быть перенесено на Swift2, поэтому я не уверен, нужно ли ему проверять, является ли это «String». –

ответ

3

Если все вы хотите знать, содержит ли словарь список ключей, вы можете проверить это следующим образом:

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

Но если вы хотите знать, для каждого ключа, является ли соответствующим значение имеет определенный тип, который не является типом значения словаря (т. е. требует кастинга), тогда то, как вы это делаете, является единственным хорошим способом.

Смежные вопросы