1
I’m having a hard time getting popular with mine UITableView with JSON. I separated some images to show the problem. Note that in the first Table Repeated values appear and next shows the same value.
First Table :
Segunda Table :
The structure I’m trying to build is the same as app kekanto. That is, in the first view would have to appear the surnames (without repeating), in the second view, the names of the persons referring to the selected surnames and in the last view, the details of the selected persons should appear.
That is to say: familia> pessoa > detalhe
Follows the code :
Model
import Foundation
class MyLocationModel: NSObject {
    //properties
    var id: String?
    var familia_id : String?
    var nome: String?
    var familia: String?
    var filhos : String?
    //empty constructor
    override init()
    {
    }
    init(id: String, familia_id: String, nome: String, familia: String, filhos: String) {
        //self.id = id
        //self.familia_id = familia_id
        //self.nome = nome
        self.familia = familia
        //self.filhos = filhos
    }
    //prints object's current state
    override var description: String {
        return "ID: \(id), NOME: \(nome), FAMILIA: \(familia), FILHOS: \(filhos)"
    }
}
    import Foundation
class localPessoasModelo: NSObject {
    //properties
    var id: String?
    var familia_id : String?
    var nome: String?
    var familia: String?
    var filhos : String?
    //empty constructor
    override init()
    {
    }
    init(id: String, familia_id: String, nome: String, familia: String, filhos: String) {
        //self.id = id
        self.familia_id = familia_id
        self.nome = nome
        //self.familia = familia
        //self.filhos = filhos
    }
    //prints object's current state
    override var description: String {
        return "ID: \(id), NOME: \(nome), FAMILIA: \(familia), FILHOS: \(filhos)"
    }
}
Tableviewcontroller:
import UIKit
class ViewController: UITableViewController, modeloProtocal  {
    //Properties
    var feedItems: NSArray = NSArray()
    var selectedLocation : MyLocationModel = MyLocationModel()
    @IBOutlet weak var listTableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        //set delegates and initialize homeModel
        self.listTableView.delegate = self
        self.listTableView.dataSource = self
        let Model = modelo()
        Model.delegate = self
        Model.downloadItems()
    }
    func itemsDownloaded(items: NSArray) {
        feedItems = items
        self.listTableView.reloadData()
    }
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return feedItems.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cellIdentifier: String = "Cell"
        let myCell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)! as UITableViewCell
        let item: MyLocationModel = feedItems[indexPath.row] as! MyLocationModel
        myCell.textLabel!.text = item.familia
        return myCell
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using [segue destinationViewController].
        let segundaScene = segue.destinationViewController as! segundaTableViewController
        // Pass the selected object to the destination view controller.
        if let indexPath = self.listTableView.indexPathForSelectedRow {
            let row = Int(indexPath.row)+1
            //detailScene.objetoAtual = feedItems[row] as? MyLocationModel
            print(row)
            segundaScene.selectRow = row
        }
    }
}
Second Tableviewcontroller:
import UIKit
class segundaTableViewController: UITableViewController, modeloPessoasProtocal {
    var listaArray : NSArray = NSArray()    
    var selectPessoas : localPessoasModelo?
    var selectRow = Int()
    @IBOutlet var segundaTableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.segundaTableView.delegate = self
        self.segundaTableView.dataSource = self
        print(selectRow)
    }
    func itemsDownloaded(items: NSArray) {
        listaArray = items
        self.segundaTableView.reloadData()
    }
    // MARK: - Table view data source
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listaArray.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cellIdentifier: String = "segundaCell"
        let myCell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)! as UITableViewCell
        myCell.textLabel!.text = selectPessoas?.nome
        return myCell
    }   
}
Detail View Controller:
import UIKit
class DetailViewController: UIViewController {
    var objetoAtual : MyLocationModel?
    var myArray : NSMutableArray = []
    @IBOutlet weak var myLabel: UILabel!
    @IBOutlet weak var nomeLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        if let object = objetoAtual {
            myLabel.text = object.familia
            nomeLabel.text = object.nome
        }
    }
}
You can view more details of the project by clicking here and here.


Post the code too, only the photos get complicated
– Gabriel Rodrigues
@Gabrielrodrigues, there’s the whole code. Will help?
– Raphael Albertini
You can put JSON too?
– Juan de Dios
I figured out what was wrong. Then, if you want, I put the answer! Vlw
– Raphael Albertini
Please, I could put the answer?
– peterq