2016-09-21 5 views
-1

У меня есть JSON данные, как это:UITableView секции из JSON стрижа данных

[{"name":"Rice","Menu":{"title":"titl1"}},{"name":"Name2","Menu":{"title":"title2"}}] 

Я хочу построить представление таблицы с секцией для каждой пары [ид, имя]. Заголовок раздела должен быть названием меню, единственной ячейкой для каждого раздела должно быть имя.

Как я могу проанализировать данные JSON в массиве и использовать, чтобы array.count определил, сколько секций нужно отобразить?

EDIT

class Menus { 
    private var _name:String! 
    private var _title:String! 

    var name:String { 
     return _name 
    } 

    var title:String { 
     return _title 
    } 

    init(nam:String, title:String) { 
     _name = nam 
     _title = title 
    } 
} 

правка

x.forEach { 
    if let uw = ($0["name"]).string { 
     um.insert(uw) 
     if let hru = ($0["Menu"]["title"]).string { 
     us.insert(hru) 
     } 
    } 
} 

for i in um { 
    for u in us { 
     var men = Menus(nam: i, tit: u) 
     self.menus.append(men) 
    } 
} 

ответ

0
var arrData:[[String:AnyObject]]! = [ 
    ["name":"Rice", 
     "Menu": 
      [ 
       "title":"titl1" 
     ] 
    ], 
    [ 
     "name":"Name2", 
     "Menu": 
      [ 
       "title":"title2" 
     ] 
    ] 
] 

var arrMenu:[Menus]! = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    for i in 0..<arrData.count { 
     let dish = arrData[i] 
     let menu = dish["Menu"] as! [String:String] 

     let name = dish["name"] as! String 
     let title = menu["title"] 

     arrMenu.append(Menus.init(nam: name, title: title!)) 
    } 


} 
// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return arrMenu.count 
} 

override func tableView(tableView :UITableView, titleForHeaderInSection section: Int)->String{ 
    let menu:Menus = arrMenu[section] 
    return menu.name 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 1 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 

    let menu = arrMenu[indexPath.section] 

    cell.textLabel?.text = menu.title 

    return cell 
} 
+0

Grracias я постараюсь его –

+0

я хочу использовать модель 'Menu' я могу использовать это? –

+0

'var menus = [Меню]()' –

Смежные вопросы