gpt4 book ai didi

ios - swift 2.1 TableView Controller segue 来查看意外发现 nil 的委托(delegate)错误

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

我研究过这个,我很确定这是正确的方法,但我不断得到

 fatal error: unexpectedly found nil while unwrapping an Optional value

在prepareForSegue行

 selectSingleVC!.delegate = self

相关的代码位在这里。我不知道为什么 nil 在那里,它让我发疯:-)

class FriendsChatViewController: UITableViewController, UIActionSheetDelegate, SelectSingleViewControllerDelegate, SelectMultipleViewControllerDelegate {

...

@IBAction func compose(sender: UIBarButtonItem) {

weak var wself: FriendsChatViewController? = self

let action = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)

let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { _ in
}

let singleAction = UIAlertAction(title: "Single recipient", style: UIAlertActionStyle.Default) { _ in
if let _ = wself {
self.performSegueWithIdentifier("selectSingleSegue", sender: self)

}
}

let multipleAction = UIAlertAction(title: "Multiple recipients", style: UIAlertActionStyle.Default) { _ in
if let _ = wself {
self.performSegueWithIdentifier("selectMultipleSegue", sender: self)

}
}


action.addAction(cancelAction)
action.addAction(singleAction)
action.addAction(multipleAction)

self.presentViewController(action, animated: true, completion: nil)

}

...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "messagesChatSegue" {
let chatVC = segue.destinationViewController as! ChatViewController
//chatVC.hidesBottomBarWhenPushed = true
let groupId = sender as! String
chatVC.groupId = groupId
} else if segue.identifier == "selectSingleSegue" {
let selectSingleVC = segue.destinationViewController as? SelectSingleViewController
print(self)
selectSingleVC!.delegate = self <-- ERROR is here
} else if segue.identifier == "selectMultipleSegue" {
let selectMultipleVC = segue.destinationViewController as? SelectMultipleViewController
selectMultipleVC!.delegate = self
}

}

这是我的 SelectSingleViewController 的相关部分

protocol SelectSingleViewControllerDelegate {
func didSelectSingleUser(user: PFUser)
}

class SelectSingleViewController: UITableViewController, UISearchBarDelegate {

var friends = [PFObject]()
var user = PFUser()
var delegate: SelectSingleViewControllerDelegate!

...

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
self.dismissViewControllerAnimated(true, completion: { () -> Void in
if self.delegate != nil {
let friendObject = self.friends[indexPath.row]
let friend = friendObject["user"] as! PFUser
self.user = friend

print(self.user)
self.delegate.didSelectSingleUser(self.user)

}
})
}

我已经为此绞尽脑汁好几个小时了,需要一些帮助来解决我的错误。谢谢

最佳答案

选中selectSingleVC。它崩溃是因为 selectSingleVCnil 并且您确定它的类型为 SelectSingleViewController 并尝试使用强制解包 !操作。

我的猜测是带有标识符selectSingleSegue的segue没有链接到 Storyboard中的SelectSingleViewController。请仔细检查您的连接。

关于ios - swift 2.1 TableView Controller segue 来查看意外发现 nil 的委托(delegate)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33372702/

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