Use of Codable and Coding Key with JSONEncoder and JSONDecoder in Swift 4

Codable is added with Xcode 9, iOS 11 and Swift 4. Codable is used to make your data types encodable and decodable for compatibility with external representations such as JSON.

Codable use to support both encoding and decoding, declare conformance to Codable, which combines the Encodable and Decodable protocols. This process is known as making your types codable.

Let’s Take an Example with Structure of Movie, here we have defined the structure as Codable. So, We can encode and decode it easily.

Continue reading

How to create a wrapper for Alamofire and SwiftyJSON? Swift – iOS

This blogpost updated with Swift 3 – Xcode 8 – iOS 10 – Alamofire 4.0

AFWrapper
AFWrapper

I have posted a basic tutorial about Alamofire and SwiftyJSON How to use Alamofire and SwiftyJSON with Swift?

And some day before we have learned about Use of Blocks(Closures) or Completion Handlers with Function in Swift – iOS

Let’s combine both the topics to make a WRAPPER of Alamofire and SwiftyJSON.
Continue reading

How to use Alamofire and SwiftyJSON with Swift? – Swift 3 – iOS 10 – Xcode 8

Swift JSON
Swift JSON

Alamofire is an HTTP networking library written in Swift.
SwiftyJSON makes it easy to deal with JSON data in Swift.
Continue reading

Update : JSON Array Parsing in Swift Language – Swift 3 – iOS 10 – Xcode 8

Swift JSON
Swift JSON

So, how to parse following type of JSON?

Create JSON Array Object :

Parse JSON Array Object :

Complete code snippet with UITableView:

Posted a gist on github.

Helping, Learning, Coding 🙂

JSON Parsing in Swift Language – iOS 8

Here is tutorial about parsing JSON in Swift Language iOS 8

Swift JSON
Swift JSON

Create a Dictionary of all JSON data:

        let url=NSURL(string:"http://api.androidhive.info/contacts/")
        let allContactsData=NSData(contentsOfURL:url)
        var allContacts:Dictionary<String, AnyObject>=NSJSONSerialization.JSONObjectWithData(allContactsData, options: NSJSONReadingOptions.MutableContainers, error: nil) as Dictionary<String, AnyObject>

        NSLog("%@", allContacts)

Parse the JSON by finding your key:

        let contacts : AnyObject? = allContacts["contacts"]

        for contacts in allContacts.keys {
            println("All = \(contacts)")
            let contact : AnyObject? = allContacts[contacts]
            let collection = contact! as Array<Dictionary<String, AnyObject>>
            for subContact in collection {
                let name : AnyObject? = subContact["name"]
                let email : AnyObject? = subContact["email"]

                names+=name! as String
                emails+=email! as String

                println("Name: \(name)")
                println("Email: \(email)")
            }
        }

Complete code snippet with UITableView:

import UIKit

class ViewController: UIViewController,UITableViewDelegate, UITableViewDataSource
{

    @IBOutlet var tblJson : UITableView = nil

    var names: String[] = []
    var emails: String[] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        let url=NSURL(string:"http://api.androidhive.info/contacts/")
        let allContactsData=NSData(contentsOfURL:url)
        var allContacts:Dictionary<String, AnyObject>=NSJSONSerialization.JSONObjectWithData(allContactsData, options: NSJSONReadingOptions.MutableContainers, error: nil) as Dictionary<String, AnyObject>

        NSLog("%@", allContacts)

        let contacts : AnyObject? = allContacts["contacts"]

        for contacts in allContacts.keys {
            println("All = \(contacts)")
            let contact : AnyObject? = allContacts[contacts]
            let collection = contact! as Array<Dictionary<String, AnyObject>>
            for subContact in collection {
                let name : AnyObject? = subContact["name"]
                let email : AnyObject? = subContact["email"]

                names+=name! as String
                emails+=email! as String

                println("Name: \(name)")
                println("Email: \(email)")
            }
        }

        println(names)
        println(emails)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return self.names.count;
    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? UITableViewCell

        if !cell {
            cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "cell")
        }
        cell!.textLabel.text = self.names[indexPath.row]
        cell!.detailTextLabel.text = self.emails[indexPath.row]
        return cell
    }

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        println("You selected name : "+names[indexPath.row])
    }
}

Helping, Learning, Coding 🙂