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

如何通过Segue传递JSON数组至另一个ViewController并在不同Label显示

解决JSON字典传递到目标ViewController并显示到Label的问题

你当前的核心问题是类型不匹配:你传递的是[String: AnyObject]类型的字典,但在prepare(for:sender:)里错误地尝试将其转换为[String]数组,这就导致类型转换失败,后续代码无法执行。下面是完整的修正方案:


步骤1:修正源ViewController的prepare(for:sender:)方法

首先确保你在跳转时传递的字典能被正确识别,修改后的代码如下:

var sendData = [String: AnyObject]()
sendData = datas
print("Send Data : \(sendData)")
DispatchQueue.main.async { 
    self.performSegue(withIdentifier: "checkLoginViewController", sender: sendData) 
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // 先校验segue标识,避免和其他跳转逻辑冲突
    guard segue.identifier == "checkLoginViewController", 
          let destinationVC = segue.destination as? signUpViewController,
          let sendmyDict = sender as? [String: AnyObject] else {
        return
    }
    // 将字典传递给目标ViewController的属性
    destinationVC.receivedData = sendmyDict
}

步骤2:在目标ViewController中定义接收属性并赋值给Label

在signUpViewController里先定义一个用于接收数据的属性,然后在viewDidLoad中将字典里的内容解析到对应的Label上:

// 定义接收字典的属性(可选类型,避免未传递数据时崩溃)
var receivedData: [String: AnyObject]?

override func viewDidLoad() {
    super.viewDidLoad()
    // 安全解包接收的数据
    guard let data = receivedData else {
        print("未接收到数据")
        return
    }
    
    // 示例:将字典中的值赋值给对应的Label
    // 假设你有nameLabel、ageLabel、emailLabel三个Label
    if let userName = data["name"] as? String {
        nameLabel.text = userName
    }
    if let userAge = data["age"] as? Int {
        ageLabel.text = "年龄:\(userAge)"
    }
    if let userEmail = data["email"] as? String {
        emailLabel.text = userEmail
    }
    // 根据你实际的JSON字段和Label需求,继续添加对应的解析逻辑
}

额外说明

如果你的datas其实是数组类型(比如[[String: AnyObject]],即多个字典的集合),只需要调整以下几点:

  1. 源VC中sendData的类型改为[[String: AnyObject]]
  2. prepare方法中转换类型为[[String: AnyObject]]
  3. 目标VC的接收属性改为var receivedData: [[String: AnyObject]]?,然后根据数组索引或遍历的方式取数据赋值给Label

内容的提问来源于stack exchange,提问作者Sandesh Zote

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:05:10