iOS Error Handling in Swift Error Handling Handling Errors

I don't know what's wrong

I can't figure out why my code isn't working

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

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

  func parse() throws {



if let unwrappedData = data {

      if unwrappedData.keys.contains("someKey") {

      } else  {
        throw ParserError.invalidKey
      }
} else {
      throw  ParserError.emptyDictionary
}

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

do {
 let wrong = try Parser.parse()
 } catch ParserError.emptyDictionary  {
  print("No dictionary")
} catch ParserError.invalidKey {
  print("Invalid key.")
} catch {
  print("woops")
}

1 Answer

Jeff McDivitt
Jeff McDivitt
21,366 Points

You have a few errors that I think you will see the mistakes once you view the correct code

enum ParserError: Error {
    case emptyDictionary
    case invalidKey
}

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

    func parse() throws {

        guard let data = data else {
            throw ParserError.emptyDictionary
        }

        guard data["somekey"] != nil else {
            throw ParserError.invalidKey


        }
    }
}

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

do {
    let parser = try Parser(data: data)
    try parser.parse()
} catch ParserError.emptyDictionary(let description) {
    print(description)
}
catch ParserError.invalidKey(let description) {
    print(description)
}