ищет наиболее эффективный способ отображения данных JSON, полученных через веб-сокет, в динамическую таблицу Xcode / Swift - PullRequest
0 голосов
/ 27 октября 2019

В настоящее время я работаю над торговым приложением MacOS для финансового рынка, которое может получать 10-20 сообщений веб-сокетов в секунду, содержащих данные JSON. А пока давайте предположим, что после отображения данных в таблице и получения нового сообщения предыдущие данные больше не нужны. Каков был бы рекомендуемый и наиболее эффективный способ получить данные в таблицу и как можно быстрее обновлять их?

У меня настроено и работает подключение к веб-сокету (используется SocketRocket. Данные поступаюткак я должен. Но я действительно не хочу продолжать дальше, не имея лучшего понимания наиболее эффективного способа представления этих данных в таблицу. Я читал о DictionaryArrayController и, возможно, использовал библиотеку базы данных, но я думаю, чтопоследнее добавит только ненужные накладные расходы для того, что я пытаюсь сделать.

Ниже приведен пример данных, которые я получаю.

    {
    "id":"5267",
    "pt":"T",
    "ls":["1"],
    "lp":["11968"],
    "t":["1571824228"],
    "v":"133758",
    "h":"11981",
    "l":"11928",
    "bp":["0","1","2","3","4","5","6","7","8","9"],
    "bs":["14","73","87","66","74","96","98","85","111","104"],
    "ap":["1","2","3","4","5","6","7","8","9","10"],
    "as":["69","67","62","124","89","105","97","107","113","124"]
    }

Единственные значения, которые мне понадобятсяотображение и обновление таблицы будут осуществляться с клавиш: «ls», «lp», «v», «h», «l», «bs», «as»

Мне не нужен подробный кодированный ответ,но я бы никогда от этого не отказался. В основном, просто искал мысли, чтобы позже мне не пришлось переключаться на другой путь.

Я также приложу scrЗахват файла Excel с указанием порядка расположения ячеек. скриншот желаемого макета

1 Ответ

0 голосов
/ 27 октября 2019

Вы пытались использовать JSON-декодер, встроенный в Swift?

Создать подходящую модель с использованием протокола Decodable. Имена свойств и типы данных должны точно соответствовать входящему JSON

struct IncomingData: Decodable {
{
    let ls: [String],
    let lp: [String],
    let h: String,
    let as: [String]
}

. Настроить синтаксический анализ следующим образом:

func parseJSON(_ incomingData: Data) -> IncomingData? {
    let decoder = JSONDecoder()
    do {
        let parsedData = try decoder.decode(IncomingData.self, from: incomingData)

        print("as: \(as)"
        return parsedData
    }
    catch {
        self.delegate?.didFailWithError(error: error)
        return nil
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...