user5845012
user5845012

Reputation:

Swift 3 - Error - Cannot invoke 'data' with an argument list of type '(using: String.Encoding)'

I've got a mobile SDK that was working prior to the Swift 3 Migration.

I get the following error :

Cannot invoke 'data' with an argument list of type '(using: String.Encoding)'

Here:

open class func applyTheCode(
        _ theCode: String,
        forTenant tenant: String,
        toUserID userID: String,
        toAccountID accountID: String,
        withToken token: String,
        completionHandler: @escaping (_ userInfo: AnyObject?, _ error: NSError?) -> Void) {

            let url = baseURL.appendingPathComponent("path/to/api/call")
            let request = NSMutableURLRequest(url: url)
            request.setValue("application/json", forHTTPHeaderField: "Content-Type")
            request.setValue(token, forHTTPHeaderField: "token")
            request.httpMethod = "POST"
            request.httpBody = NSString(string: "{}").data(using: String.Encoding.utf8)

            let dataTask = companyDataTaskStatusOKWithRequest(request as URLRequest, withCallback: completionHandler)
            dataTask.resume()
}

The line in question:

request.httpBody = NSString(string: "{}").data(using: String.Encoding.utf8)

My question is is there a better way of writing this line of code, or has anyone ran into this problem and have been successful in migrating it into swift 3 syntax.


Things I've tried :

request.httpBody = String("{}").data(using: String.Encoding.utf8)

But I'm not sure it's the same, but I could be mistaken.


Any direction or links or answers welcomed :D

Upvotes: 3

Views: 1741

Answers (1)

jatin kumar malana
jatin kumar malana

Reputation: 321

You are using NSString , what you should do is use String

request.httpBody = "{}".data(using: String.Encoding.utf8)

Upvotes: 4

Related Questions