You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中如何用Object Mapper追加字典数组及UserMedias数组?

在Swift 4中使用Object Mapper追加字典数组的实现方法

嘿,我来帮你搞定这个问题!在Swift 4里结合ObjectMapper处理数组追加其实很简单,我给你一步步拆解实现方法:

第一步:确保你的UserMedias模型正确实现Mappable协议

这是ObjectMapper解析数据的基础,你需要让模型类遵循Mappable,并实现必要的初始化和映射方法:

import ObjectMapper

class UserMedias: Mappable {
    // 根据接口返回的字段定义你的属性,示例如下:
    var mediaId: Int?
    var url: String?
    var descriptionText: String?

    // 必须实现的初始化方法
    required init?(map: Map) {}

    // 属性与JSON字段的映射逻辑
    mutating func mapping(map: Map) {
        mediaId <- map["id"]
        url <- map["media_url"]
        descriptionText <- map["description"]
    }
}

注意:这里的映射key要和接口返回的JSON字段完全匹配,大小写敏感哦!

第二步:解析登录返回的UserMedias数组并追加到messageList

登录成功后,从控制台返回的用户数据中提取UserMedias对应的字典数组,用ObjectMapper解析成[UserMedias]类型,再追加到你的空数组里:

// 假设登录接口返回的完整数据是responseDict(类型为[String: Any])
if let userMediasJSONArray = responseDict["UserMedias"] as? [[String: Any]] {
    // 使用ObjectMapper将字典数组转换为模型数组
    if let parsedUserMedias = Mapper<UserMedias>().mapArray(JSONArray: userMediasJSONArray) {
        // 追加到已有的messageList数组
        self.messageList.append(contentsOf: parsedUserMedias)
        
        // 刷新表格视图(必须在主线程执行UI操作)
        DispatchQueue.main.async {
            self.tableView.reloadData()
        }
    }
}

额外场景:如果返回的是JSON字符串

如果登录接口返回的是JSON字符串而非字典,你可以先将字符串转换为字典数组再解析:

// 假设返回的是jsonString(类型为String)
guard let jsonData = jsonString.data(using: .utf8),
      let userMediasJSONArray = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [[String: Any]] else {
    return
}

let parsedUserMedias = Mapper<UserMedias>().mapArray(JSONArray: userMediasJSONArray)
self.messageList.append(contentsOf: parsedUserMedias)

// 刷新表格视图
DispatchQueue.main.async {
    self.tableView.reloadData()
}

关键注意事项

  • 确保messageList是用var声明的可变数组(你已经做到啦)
  • 解析时如果出现数据为空的情况,检查JSON字段名和模型映射的key是否一致
  • UI更新操作必须放在主线程,避免出现界面刷新异常的问题

内容的提问来源于stack exchange,提问作者Gorib Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:32:51