Swift4将JSON解码结果发送到课程进行处理



我正在遵循一个教程,该教程涉及获取JSON数据并将其解码为数组并使此功能工作并创建一个数组'用户',请参见代码:

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]
}()

我想要一些提示或代码来帮助我解决这个问题。

您的响应是用户和推文的字典,您用错误的键声明您的用户类(如果愿意,可以摆脱推文密钥)

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 
}

最新更新