数据未能通过

Posted

技术标签:

【中文标题】数据未能通过【英文标题】:Data is failing to pass over 【发布时间】:2017-01-09 20:53:29 【问题描述】:

在我的 tableview.swift 中,我将用户配置文件加载到单元格中。当用户选择其中一个单元格时,他们会被重定向到 mainProfile.swift ,在那里他们可以看到所选的用户配置文件。在阅读了几篇文章后,我在 tableview.swift 中设置了这段代码,但它仍然没有将从 tableview 的单元格捕获的数据传递到 mainProfile

var mainProfile: mainProfile?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    let user1 = self.users[indexPath.row]
    mainProfile?.user2 = user1
    print(mainProfile?.user2 as Any)
    performSegue(withIdentifier: "mainProfile", sender: self)


override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == "mainProfile" 
        let viewControllerAccept = segue.destination as! mainProfile
        let user2 = sender as Any?
        viewControllerAccept.user2 = user2 as! User?
    

【问题讨论】:

【参考方案1】:

您应该简化 didSelectRowAt 以只执行转场:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    performSegue(withIdentifier: "mainProfile", sender: self)    

(或者完全去掉这个方法,直接把segue加到storyboard的cell原型上。)

然后,更改prepare(segue:) 以使用indexPathForSelectedRow 来知道选择了哪一行:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == "mainProfile" 
        let indexPath = tableView.indexPathForSelectedRow!
        let viewController = segue.destination as! MainProfileViewController
        viewController.user2 = users[indexPath.row]
    

【讨论】:

顺便说一句,我更改了目标视图控制器类的名称,因为根据 Cocoa 命名约定,类应始终以大写字母开头。显然,使用适合您情况的任何类名。 我不知道该怎么感谢你!该解决方案完美运行,再次感谢您

以上是关于数据未能通过的主要内容,如果未能解决你的问题,请参考以下文章

查看正在缓存/未能刷新的数据

未能找到元数据文件

gpg 未能签署数据致命:未能写入提交对象 [Git 2.10.0]

未能执行数据表搜索

因为数据库正在使用,所以未能获得对数据库的排它访问权RESTORE DATABASE操作异常终止

数据移动,未能继续以NOLOCK方式扫描!