How can I group TableView items from a dictionary in swift? How can I group TableView items from a dictionary in swift? ios ios

How can I group TableView items from a dictionary in swift?


You can use struct for that and here is example:

import UIKitclass TableViewController: UITableViewController {    var names = ["Vegetables": ["Tomato", "Potato", "Lettuce"], "Fruits": ["Apple", "Banana"]]    struct Objects {        var sectionName : String!        var sectionObjects : [String]!    }    var objectArray = [Objects]()    override func viewDidLoad() {        super.viewDidLoad()        for (key, value) in names {            println("\(key) -> \(value)")            objectArray.append(Objects(sectionName: key, sectionObjects: value))        }    }    // MARK: - Table view data source    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {        return objectArray.count    }    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return objectArray[section].sectionObjects.count    }    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell        // Configure the cell...        cell.textLabel?.text = objectArray[indexPath.section].sectionObjects[indexPath.row]        return cell    }    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {        return objectArray[section].sectionName    }}


Swift 2

you dictionary example

var dic:Dictionary<String,String> = ["key":"value","key1":"value2"]

Your table

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell    var key   = Array(self.dic.keys)[indexPath.row]    var value = Array(self.dic.values)[indexPath.row]    cell.text = key + value }


If you want it sorted use the global sorted function to sort the dictionary.

import UIKitclass TableViewController: UITableViewController {    var names = ["Vegetables": ["Tomato", "Potato", "Lettuce"], "Fruits": ["Apple", "Banana"]]    var namesSorted = [String, Array<String>]()    override func viewDidLoad() {        super.viewDidLoad()        // Sort names        namesSorted = sorted(names) { $0.0 < $1.0} // namesSorted = ["Fruits": ["Apple", "Banana"], "Vegetables": ["Tomato", "Potato", "Lettuce"]]    }    // MARK: - Table view data source    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {        return namesSorted.count    }    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return namesSorted[section].1.count    }    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell        // Configure the cell...        cell.textLabel?.text = namesSorted[indexPath.section].1[indexPath.row]        return cell    }    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {        return namesSorted[section].0    }}