Как использовать подписки в дополнительном массиве словарей - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь прочитать CSV-файл в Linux с помощью библиотеки CSwiftV, однако возвращаемый тип, который меня интересует больше всего, - это необязательный массив словарей.Я изо всех сил пытался понять, как использовать подписку для доступа к содержимому массива.Используя самый простой пример библиотеки (если у вас установлен марафон, просто скопируйте в файл и marathon run):

import CSwiftV // marathon: https://github.com/Daniel1of1/CSwiftV.git

let inputString = "Year,Make,Model,Description,Price\r\n1997,Ford,E350,descrition,3000.00\r\n1999,Chevy,Venture,another description,4900.00\r\n"

let csv = CSwiftV(with: inputString)

let rows = csv.rows // [
                    //  ["1997","Ford","E350","descrition","3000.00"],
                    //  ["1999","Chevy","Venture","another description","4900.00"]
                    // ]

let headers = csv.headers // ["Year","Make","Model","Description","Price"]

let keyedRows = csv.keyedRows // [
                              //  ["Year":"1997","Make":"Ford","Model":"E350","Description":"descrition","Price":"3000.00"],
                              //  ["Year":"1999","Make":"Chevy","Model":"Venture","Description":"another, description","Price":"4900.00"]
                              // ]

print(csv.rows)
print(csv.headers)
print(csv.keyedRows)

Пока все хорошо, но теперь, когда я пытаюсь print(csv.keyedRows[0][0]) или print(csv.keyedRows[[0]])Я получаю что-то вроде:

   - 24:16: value of optional type '[[String : String]]?' must be unwrapped to refer to member 'subscript' of wrapped base type '[[String : String]]'
  • Как я могу получить доступ к данным словаря в этом случае (я думаю о чем-то похожем на csv.keyedRows[0]["Year"])?

1 Ответ

0 голосов
/ 20 сентября 2018

Для этого:

print(csv.keyedRows[0]["Year"])

Вы можете использовать необязательную привязку:

if let keyedRows = csv.keyedRows {
    print(keyedRows[0]["Year"])
} else {
    // keyedRows is nil!
}

Или вы можете использовать оператор постфикса ?:

print(csv.keyedRows?[0]["Year"] as Any)
// or
print(csv.keyedRows?[0]["Year"] ?? "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...