Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 如何将特定的用户标识与特定的表视图单元格相关联?_Swift3_Xcode8 - Fatal编程技术网

Swift3 如何将特定的用户标识与特定的表视图单元格相关联?

Swift3 如何将特定的用户标识与特定的表视图单元格相关联?,swift3,xcode8,Swift3,Xcode8,我正在创建一个应用程序,它有一个用户的表视图,我正在使用JSON下拉它。表视图填充了我想要的所有信息,但我只是在做基本信息。我想做的是,用户将单击一个表视图单元格,它将把他们带到另一个视图控制器,在该视图控制器中将有一个更详细的纵断面图。在我的JSON中,当表视图开始加载时,我获得了所有的用户信息,比如UserID等等,我希望将该用户ID与每个单独的表单元格相关联,这样当单击它们时,我可以在下一个窗口中运行php脚本,以显示该表中用户的配置文件。我通常这样做的方式是首先将JSON映射到模型对象,

我正在创建一个应用程序,它有一个用户的表视图,我正在使用JSON下拉它。表视图填充了我想要的所有信息,但我只是在做基本信息。我想做的是,用户将单击一个表视图单元格,它将把他们带到另一个视图控制器,在该视图控制器中将有一个更详细的纵断面图。在我的JSON中,当表视图开始加载时,我获得了所有的用户信息,比如UserID等等,我希望将该用户ID与每个单独的表单元格相关联,这样当单击它们时,我可以在下一个窗口中运行php脚本,以显示该表中用户的配置文件。

我通常这样做的方式是首先将JSON映射到模型对象,并使用表数据源中的这些模型对象填充表视图。点击单元格时,我会进行反向映射(从单元格到模型对象),并可以将模型对象(或模型对象信息的子集)转发到
prepare(for:sender:)
中的下一个视图控制器。为了实现这一点,我在Interface Builder中设置了单元格,以便在选择时触发到details view控制器的序列

示例代码:

struct User
{
    let id: String
    let name: String
    // etc.
}

class YourTableViewController: UITableViewController
{
    var users: [User] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        let json = getJSON()
        users = createUsers(from: json)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Check segue.identifier, left out for brevity.
        let destination = segue.destination as! YourDetailsViewController
        let cell = sender as! UITableViewCell
        let indexPath = tableView.indexPath(for: cell)!
        let user = users[indexPath.row]
        destination.user = user
    }

    // ... other funcs for table view ...

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let user = users[indexPath.row]
        // dequeue cell, set up with info from user, return it
    }
}