Преобразовать JSON в массив с помощью структуры - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь создать приложение для IOS, которое будет домашней автоматизацией.Я использую TableViewCell для отображения информации.

Моя проблема в том, что я понятия не имею, как передать JSON в массив с struct, потому что мне нужно иметь struct, я думаю.

Мой JSON:

[{"namea":"TV","statea":"up_tv"},{"namea":"test","statea":"test"}]

Мой код:

struct cellData {
let nameLabel : String!
let stateLabel : String!
}

class Main: UITableViewController {

var array = [cellData]()

override func viewDidLoad() {
    array = [cellData(nameLabel: "tv", stateLabel: "up_tv"),
             cellData(nameLabel: "tv", stateLabel: "down_tv")]

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return array.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell

    cell.nameLabel.text = array[indexPath.row].nameLabel
    cell.stateLabal.text = array[indexPath.row].stateLabel
    return cell
}

1 Ответ

0 голосов
/ 19 мая 2018

Вам нужен jsonDecoder

struct cellData : Decodable {
   let nameLabel : String
   let stateLabel : String

      enum CodingKeys:String,CodingKey {
        case nameLabel = "namea"
        case stateLabel = "statea"

      }
}

//

let str = """

    [{"namea":"TV","statea":"up_tv"},{"namea":"test","statea":"test"}]

"""

do {
       let cellArr = try JSONDecoder().decode([cellData].self, from: str.data(using:.utf8)!)
       print(cellArr)   //// check this 

} catch {

}

//

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{
  let cell =  tableView.dequeueReusableCell(withIdentifier: "id") as TableViewCell

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...