2

I'm attempting to Promise a Json object.

However, JSONSerialization.jsonObject isn't accepting any of my parameters..

class func deserialize<T>(data: Data) -> Promise<T> {
    let deserialized = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments)
        String(data: data, encoding: String.Encoding.utf8)

    // Deserialize or try as String
    guard let object = deserialized else {
        return Promise<T>(error: APIError.InvalidJSON(data) as Error)
    }

    // Cast as T
    guard let objectT = object as? T else {
        return Promise<T>(error: APIError.JSONTypeMismatch(object, T.self))
    }

    return Promise(objectT)
}

I'm receiving two errors:

let desserialized = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments)

"Cannot invoke 'jsonObject' with an argument list of type '(with: Data, options: JSONSerialization.ReadingOptions)'"

String(data: data, encoding: String.Encoding.utf8)

"Cannot convert value of type 'Data' to expected argument type 'Data'"

Konrad Wright
  • 1,254
  • 11
  • 24

1 Answers1

0

Credit goes to "RMaddy"

Seems like you have another Data class/struct that is conflicting with the standard Swift Data struct.

There was a pre-existing class that I named Data.

Konrad Wright
  • 1,254
  • 11
  • 24