json - SWIFT4 将 JSON 解码结果发送到类进行处理

标签 json swift class

我正在遵循一个教程,其中涉及获取 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 
}

关于json - SWIFT4 将 JSON 解码结果发送到类进行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824028/

相关文章:

javascript - 基于 Web 的 json 编辑器组件

python - 如何在 Python 中将 csv 文件列中的最小/最大值查找为类似 JSON 的格式?

swift - FIRMessaging 客户端未设置

java - 哪些情况下允许在静态初始化程序 block 中进行前向引用?

json - 最好将数组,集合或字典用于大量项目?

java - 如何在 JSON 中存储键值对以在 Java 中反序列化?

ios - 如何在 swift 3 开始编辑时为多个 uitextfield 设置边框颜色?

ios - Azure B2C 刷新 token 功能在 iOS Swift 示例应用程序中不起作用

c++ - 将 **Class 作为参数传递

Python - 访问父成员