I'm currently using the following clumsy bits of code for determining if a non-empty swift dictionary contains a given key and for obtaining one value from the same dictionary

How do i use swift to write this more elegantly?

// excerpt from method that determines if dict contains key
if let _ = dict[key] {
    return true
}
else {
    return false
}

// excerpt from method that obtains first value from dict
for (_, value) in dict {
    return value
}
Best Answer


You don't need any special code to do this, because it is what a dictionary already does. When you fetch dict[key] you know whether the dictionary contains the key, because the Optional that you get back is not nil (and it contains the value).

So, if you just want to answer the question whether the dictionary contains the key, ask.

let keyExists = dict[key] != nil

If you want the value and you know the dictionary contains the key, say.

let val = dict[key]!

But if, as usually happens, you don't know it contains the key - you want to fetch it and use it, but only if it exists - then use something like if let .

if let val = dict[key] {
    // now val is not nil and the Optional has been unwrapped, so use it
}