Можно ли пропустить первое свойство в таблице объектов json? - PullRequest
0 голосов
/ 17 мая 2018

Моя функция для анализа массива свойств объекта json выглядит следующим образом:

var jsonObject = "[{"

        for i in 1...table.count {
            var str = ""
            var insideStr = String()
            for property in properties {
                let filteredTable = table.value(forKey: property) as! [Any]
                insideStr += "\"\(property)\": \"\(filteredTable[i - 2])\","
            }

            let index = insideStr.characters.index(insideStr.startIndex, offsetBy: (insideStr.count - 2))

            insideStr = String(insideStr[...index])
            str += "\(insideStr)}],"
            jsonObject.append(str)
        }
        let index = jsonObject.characters.index(jsonObject.startIndex, offsetBy: (jsonObject.count - 2))
        jsonObject = "\(String(jsonObject[...index]))"
        return jsonObject
        }catch let error { print("\(error)") }

Мой вопрос: возможно ли пропустить первое свойство, потому что оно всегда возвращает ноль данных?

Ответы [ 2 ]

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

Замените цикл for на цикл for ... in, а затем добавьте предложение where, чтобы исключить nils, поскольку вы не хотите рисковать иметь дело с ними.

for tableItem in table where tableItem != nil {
    // Handle json here
}

Или вы можете использовать функции более высокого порядка, чтобы удалить все нули, а затем выполнить итерацию по нему следующим образом:

table.filter({ $0 != nil }).forEach({ tableItem in // Do stuff with tableItem })
0 голосов
/ 17 мая 2018

Вы можете удалить первое свойство:

delete obj[Object.keys(obj)[0]];

В противном случае нарежьте как это:

Object.entries(obj).slice(1); //array of arrays [key,value], without the first.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...