Как отобразить ключ и значение из объекта Json - PullRequest
0 голосов
/ 01 марта 2019

Я использую Json Object для отображения в табличном представлении. Я также проанализировал Json и успешно распечатал данные.и я использую оператор foreach, чтобы получить данные в переменную. Но проблема в том, что я получаю в переменную последний элемент в объекте json.Я хочу отобразить имя пользователя для переменной, чтобы представить имя на нем

вот мои данные Json

{
"Categories": [
    "school, class"
   ],
"Tags": [
    {
        "Value": "ashok",
        "Key": "Name"
    }, {
        "Value": "III",
        "Key": "class"
    }, {
        "Value": "A",
        "Key": "section"
    }
   ]
}

вот мой массив моделей

struct classInfo: Decodable {  
    let Categories: String
    let Tags: String
    let Value: String
    let Key: String
    var Name: String
    let class: String
}

вот мойкод

var ClassList = [classInfo]()

var name: String = ""
var class: String = ""

В ФУНКЦИИ JSONSerialization

do{
            let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String: AnyObject]
            print(json as AnyObject)

            let cat = json["Categories"] as? [String: Any]
            print(cat!)

         if let array = json["Tags"] as? [[String: Any]] {
                for obj in array {
                    if let dict = obj as? NSDictionary {
                        // Now reference the data you need using:
                        let Value = dict.value(forKey: "Value")
                        let Key = dict.value(forKey: "Key")
                        print(Value!)
                        print(Key!)

                        self.name = tag["Value"] as! String
                        print(self.name)

                        self.class = tag["Value"] as! String
                        print(self.class)
                    }
                }
            }

В КЛЕТКЕ ДЛЯ ФУНКЦИИ ROW

    cell.Name.text = "Name:\(name)"
    cell.class.text = "class: \(class)"

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

эй, попробуйте тогда,

class ModelClass {var name:String}

теперь создайте пользовательскую ячейку tableView

class CustomTableViewCell:UITableViewCell { 
    var dataModel : ModelClass?{
           didSet{
           guard let model = dataModel else {return}
           print(model.name)
           // set label text here : ex := myLabel.text = model.name

        }
     }
   // declare all IBLayouts or create them programmatically... its your choice

}

в вашей ячейке tableView (cellForRowAt --->) используйте этот фрагмент

var dataModel = [ModelClass]()
dataModel = [ModelClass(name:"Rishabh"),ModelClass(name:"Adi"),ModelClass(name:"FFFf")]

, теперь передайте эту модель данных в cellDAtaModel, используя

let cell = tableView.deq() as! CustomTableViewCell //deq() - > to lazy to type whole lol ;P type by yourself 
cell.dataModel = dataModel[indexPath.row]
0 голосов
/ 01 марта 2019

используйте это

class ModelClass{ var name:String ; var classs:String }

class ModelDataClass { static var modelData = [ModelClass]() }

в вашем viewController.- добавь значения в модели и в свой cellForRowAt ->

cell.nameTextLabel.text = ModelDataClass.modelData[indexPath.row].name
cell.classsTextLabel.text = ModelDataClass.modelData[indexPath.row].classs
...