Прыжок в swift - проблема с массивом словаря от json - PullRequest
0 голосов
/ 08 марта 2019

json входит и представляет собой массив словаря:

let dict = try JSONSerialization.dictionary(data: data, options: .allowFragments)


(key: contact_383348580, value: {
    email = "r@c.com";
    "first_name" = Jon;
    "last_name" = B;
    tags = "";
})
(key: contact_445575065, value: {
    email = "n.w@s.com";
    "first_name" = "<null>";
    "last_name" = "<null>";
    tags = "";
})

Попытка сопоставить это с классом User (а затем отсортировать альфа по имени (?)) И затем заполнить представление таблицы.

Я весь obj-c, но пытаюсь добавить эту функцию в свой проект objc через swift, чтобы постепенно улучшать свои навыки.Но поиск в Google возвращает все по-разному с различными быстрыми версиями, которые, кажется, не работают (или, честно говоря, имеют смысл для меня в любом случае, но я доберусь до этого).

В настоящее время я могу создавать пользователей, но имена пусты.

for objects in dict {
    print(objects)

    let first = dict["first_name"] as? String
    let last = dict["last_name"] as? String
    let name = "\(first ?? "asas") \(last ?? "sdasd")"
    let object = User(username: name)
    contacts.append(object!)
}
print(" contacts \(contacts)")

1 Ответ

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

Вы говорите, что у вас есть массив словарей, и если это правильно, то вы обманули себя именами своих переменных, потому что dict - это массив, а objects - словарь.Я полагаю, ваш код не компилируется?

А как насчет

let array = try JSONSerialization.dictionary(data: data, options: .allowFragments)

for dict in array {
    let first = dict["first_name"] as? String ?? "asas"
    let last = dict["last_name"] as? String ?? "sdasd"
    let name = "\(first) \(last)"
    let object = User(username: name)
    contacts.append(object)
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...