iOS Error Handling in Swift Error Handling Handling Errors

I don't quite understand how to get the empty key property. Can someone help?

To get a list of keys in a dictionary you can use the keys property which returns an array. Use the contains method on it to check if the value exists in the array

enum ParserError: Error { case emptyDictionary case invalidKey }

struct Parser { var data: [String : String?]?

func parse() throws {
    guard let emptyDictionary = data else { throw ParserError.emptyDictionary }
    guard let invalidKey = data?.keys.contains("someKey") else { throw ParserError.invalidKey }
}   

}

let data: [String : String?]? = ["someKey": nil] let parser = Parser(data: data)

error.swift
enum ParserError: Error {
  case emptyDictionary
  case invalidKey
}

struct Parser {
  var data: [String : String?]?

func parse() throws {
        guard let emptyDictionary = data else { throw ParserError.emptyDictionary }
         guard let invalidKey = data?.keys.contains("someKey") else { throw ParserError.invalidKey }

    }
}

let data: [String : String?]? = ["someKey": nil]
let parser = Parser(data: data)

1 Answer

Mitchell Richmond
Mitchell Richmond
5,401 Points

I found this was a much easier way to do it and the challenge accepts it.

guard data != nil else { throw ParserError.emptyDictionary }

    guard (data?["someKey"]) != nil else {
        throw ParserError.invalidKey
    }