Невозможно сгруппировать массив JSON из-за ошибки при вводе типа - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть API, который возвращает массив словарей, и я пытаюсь сгруппировать его по ключу date в каждом элементе с помощью функции Dictionay(grouping:) Swift.JSON выглядит следующим образом:

[
    { "date": "2018-12-12", "name": "abc" },
    { "date": "2018-12-12", "name": "def" },
    { "date": "2018-12-13", "name": "def" },
    ...
]

У меня есть следующий быстрый код, который генерирует ошибку компиляции:

let json = response.result.value as! Array<[String:AnyObject]>
let groupedByDate = Dictionary(grouping: json, by: { (item) -> String in
    return (item as! [String:AnyObject])["date"]
})

При компиляции я получаю эту ошибку:

Cannot subscript a value of type '[String : AnyObject]' with an index of type 'String'

и это предупреждение:

Cast from '_' to unrelated type '[String : AnyObject]' always fails

Я очень смущен, потому что переменная item явно имеет тип [String:AnyObject], и я могу индексировать в json в отладчике, выполняя po json[0]["date"].

1 Ответ

0 голосов
/ 14 декабря 2018

Ваш код противоречит сам себе.Когда вы говорите

let groupedByDate = Dictionary(grouping: json, by: {
    (item) -> String in

, вы заключаете договор, что вы возвращаете строку из этого замыкания.

Но когда вы тогда говорите

return (item as! [String:AnyObject])["date"]

, вы возвращаетесьAnyObject, а не строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...