как получить значения массива, хранящиеся в переменной, и показать их в виде таблицы? - PullRequest
0 голосов
/ 05 августа 2020

у меня есть этот массив в моем JSON ответе на запрос Post с использованием Alamofire

"emergency_contacts": [
            {
                "id": 8,
                "user_id": 11,
                "first_name": "abc",
                "last_name": "abc",
                "email": "svsg@hh.ggg",
                "phone_number": "+27676800080",
                "created_at": "2020-07-30T23:09:10.000000Z",
                "updated_at": "2020-07-30T23:09:10.000000Z",
                "deleted_at": null
            }
            {
                "id": 9,
                "user_id": 11,
                "first_name": "xxc",
                "last_name": "xxc",
                "email": "sh2.ggg",
                "phone_number": "+27676800080",
                "created_at": "2020-07-30T23:09:10.000000Z",
                "updated_at": "2020-07-30T23:09:10.000000Z",
                "deleted_at": null
            }
        ],

Я сохранил этот ответ следующим образом

let arrayData = userData["emergency_contacts"] as! NSArray

как мне получить эти значения в какой-нибудь var и показать этот массив в tableView?

Ответы [ 3 ]

0 голосов
/ 05 августа 2020

Думаю, этот код подойдет вам

      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       arrayData.count
     }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
    let cell = tableView.dequeueReusableCell(withIdentifier: "ContactTableCell", for: indexPath) as! ContactTableCell
    
     var userId = arrayData[indexPath.row].user_id
     }
0 голосов
/ 05 августа 2020

Пожалуйста, попробуйте этот код

extension ViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayData.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell.init(style: .default, reuseIdentifier: "cell")
    
    let dicData = arrayData.object(at: indexPath.row) as? NSDictionary
    print(dicData?.value(forKey: "id") as Any)
    print(dicData?.value(forKey: "user_id") as Any)
    print(dicData?.value(forKey: "first_name") as Any)
    print(dicData?.value(forKey: "last_name") as Any)
    print(dicData?.value(forKey: "email") as Any)
    print(dicData?.value(forKey: "phone_number") as Any)
    print(dicData?.value(forKey: "created_at") as Any)
    print(dicData?.value(forKey: "updated_at") as Any)
    print(dicData?.value(forKey: "deleted_at") as Any)
    
    return cell
  }
}
0 голосов
/ 05 августа 2020

Вы можете использовать

let decoder = JSONDecoder()
decoder.keyEncodingStrategy = .convertToSnakeCase
do {
   let res = try decoder.decode(Root.self,from:data)
} catch { 
   print(error)
}
struct Root: Codable {
    let emergencyContacts: [EmergencyContact] 
}

// MARK: - EmergencyContact
struct EmergencyContact: Codable {
    let id, userId: Int
    let firstName, lastName, email, phoneNumber: String
    let createdAt, updatedAt: String
    let deletedAt: String? 
}
...