gpt4 book ai didi

ios - 使用Prepareforsegue将数据传递给发现nil的segued Controller

转载 作者:行者123 更新时间:2023-11-30 12:43:12 26 4
gpt4 key购买 nike

我要继续上以下类(class)。

class FriendsProfileViewController: UIViewController {
var user : User!

override func viewDidLoad() {
super.viewDidLoad()
print(user.firstName)
}
}

在 segueing 类上,我执行了以下操作来传递数据

var friends: [User]?

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("viewFriend", sender: indexPath)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let destinationVC = segue.destinationViewController
if let friendsProfileVC = destinationVC as? FriendsProfileViewController{
if let indexPath = sender as? NSIndexPath{
print(indexPath.row)
friendsProfileVC.user = friends?[indexPath.row]
}
}
}

为什么我会收到错误

fatal error: unexpectedly found nil while unwrapping an Optional value

即使我的friend?[indexPath.row]在我segue?时被验证包含一个值。

最佳答案

尝试在执行 segue 之前获取用户并将其作为 segue 发送者传递。

var friends: [User]?

private func friend(at index: Int) -> User? {

return friends.flatMap { $0.indicies.contains(index) ? $0[index] : nil }
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

if let friend = friend(at: indexPath.row) {
performSegueWithIdentifier("viewFriend", sender: friend)
} else {
print("Invalid index: \(indexPath.row)")
}
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

switch (segue.destinationViewController, sender) {
case (let controller as FriendsProfileViewController, let user as User):
controller.user = user
default:
break
}
}

关于ios - 使用Prepareforsegue将数据传递给发现nil的segued Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com