Nathan McKaskle
Nathan McKaskle

Reputation: 3063

Swift 2.0 Call Can Throw but is not marked with try

I'm trying to update the code in my app after the update to XCode 7 and it looks like I'm going to have to go through a serious learning curve again just to catch up. What am I doing wrong in the code below?

Is if let still being used?

enter image description here

I am so not familiar with try/catch outside of C#. I don't know how to use it in the context of swift and it'd be great to find an easy to understand guide that doesn't assume that I ever knew Objective C or have ever come across this before.

Upvotes: 1

Views: 2591

Answers (3)

fisky
fisky

Reputation: 1

In case of my understanding is

let result: AnyObject? = try! NSJSONSerialization.JSONObjectWithData(jsonData!, options: NSJSONReadingOptions.MutableContainers)

Upvotes: -1

JeremyP
JeremyP

Reputation: 86651

You are calling a method that throws a Swift error and as such, it needs to be marked with try.

do
{
    let json = try NSJSONSerializer.JSONObjectWithData(...)
    return json
}
catch 
{
    // By default the catch clause defines the variable error as whatever ws thrown
    print("Error is \(error)")
    return nil
}

Is pretty much what you want.

Upvotes: 1

Code Different
Code Different

Reputation: 93181

Use this instead:

do {
    let json = try NSJSONSerialization.JSONObjectWithData(...)
    return json
} catch let error as NSError {
    print("JSON Error: \(error.localizedDescription)")
}

Upvotes: 7

Related Questions