SWIFT4 Отправляет JSON-декодированный результат в класс для обработки. - PullRequest
0 голосов
/ 18 декабря 2018

Я следую руководству, которое включает в себя выборку данных JSON и декодирование их в массив, и это работает, и создается массив 'user', см. Код:

fileprivate func fetchHomeFeed(){

    let jsonUrlString = "https://api.letsbuildthatapp.com/twitter/home"

    guard let url = URL(string: jsonUrlString) else { return }

let stringdata = URLSession.shared.dataTask(with: url) { (data, response, jsonErr) in

        guard let data = data else { return }
        do {

            let user = try JSONDecoder().decode(Users.self, from: data )
            let index: Int = user.users.count

            //print the names to check
            for index in 0...(index - 1) {
                print(user.users[index].name)
            }
        } catch let jsonErr {
           print("Error serialising ", jsonErr)
        }
        }.resume()
}

Способ установки приложениявверх в том, что есть класс в другом файле с именем HomeDataSource, который нуждается в этом массиве для отображения пользователей.В настоящее время у меня есть статический массив, который работает и отображает данные в приложении.Теперь это должно быть заполнено декодированными данными из функции в fetchHomeFeed ()

Я пробовал много способов, но не могу заставить его работать, и мне нравится придерживаться установки с HomeDataSource, какой-то этоорганизованный код.

class HomeDatasource: Datasource {
let users: [User] = {

let User1 = User(name: "Frank", username: "@Loremipsum", bioText: "Lorem ipsum dolor sit amet", profileImage: UIImage(named:("profile_image.jpg")))
let User2 = User(name: "Ben", username: "@Loremipsum", bioText: "Lorem ipsum dolor sit amet", profileImage: UIImage(named:("profile_image.jpg")))

    return [User1, User2]
}()

Мне бы хотелось несколько советов или кодов, которые помогут мне решить эту проблему ..

1 Ответ

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

Ваш ответ представляет собой словарь пользователей и твитов, и вы объявляете свой класс User неверными ключами (вы можете избавиться от ключа твитов, если хотите)

let root = try JSONDecoder().decode(Root.self, from: data )
self.users = root.users

struct Root: Codable {
    let users: [User]
    let tweets: [Tweet]
}

struct Tweet: Codable {
    let user: User
    let image: Image
    let message: String
}

struct Image: Codable {
    let width, height: Int
    let imageURL: String 
}

struct User: Codable {
    let id: Int
    let name, username, bio: String
    let profileImageURL: String 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...