发送到新的View Controller的数据为零,展开可选值 [英] Data being sent to new View Controller is nil, unwrapping an Optional Value

查看:138
本文介绍了发送到新的View Controller的数据为零,展开可选值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试将事件类的详细信息传递给另一个控制器时,我会收到一条错误,说致命错误:意外发现无法解开可选值



这是发送信息的视图控制器:

  var eventDetailscontrollers:EventDetailsController! 

func showDetailView(event:Events){
let mainStoryBoarrd:UIStoryboard = UIStoryboard(name:Main,bundle:nil)
let detailsViewController:UIViewController = mainStoryBoarrd.instantiateViewControllerWithIdentifier eventDetailsID)
eventDetailscontrollers?.event = event //将所有信息发送为nil
eventDetailscontrollers.event = event //这会导致错误

print(event.name) //打印事件名称

self.presentViewController(detailsViewController,动画:true,completion:nil)
}

这是我将数据发送到的类:

  var event:活动! {
didSet {
eventPriceLabel.text = event!.date // does nothing
}
}

override func viewDidLoad(){
super.viewDidLoad()

let string = event?.name
print(string)// prints null
}
/ pre>

我的活动类:

 类事件:NSObject { 
var name:String!
var date:String!
var address:String!
var ticketPrice:Int!


解决方案

问题在这里:

  func showDetailView(event:Events){
let mainStoryBoarrd:UIStoryboard = UIStoryboard(name:Main,bundle:nil)
let detailsViewController:UIViewController = mainStoryBoarrd.instantiateViewControllerWithIdentifier(eventDetailsID)
eventDetailscontrollers?.event = event //将所有信息发送为nil
eventDetailscontrollers.event =事件//这会导致错误

print(event.name)// this打印事件名称

self.presentViewController(detailsViewController,动画:true,completion:nil)
}

您有两个变量应该相同:

  func showDetailView(event:Events){
let mainStoryBoarrd:UIStoryboard = UIStoryboard(name:Main,bundle:nil)
eventDetailscontrollers = mainStoryBoarrd.instantiateViewControllerWithIdentifier( eventDetailsID)
eventDetailscontrollers?.event = event //将所有信息发送为nil
eventDetailscontrollers.event = event //这会导致错误

print(event.name)/ / print打印事件名称

self.presentViewController(eventDetailscontrollers,animated:true,completion:nil)
}


When I try to pass details of my Event class to another controller I get an error saying "fatal error: unexpectedly found nil while unwrapping an Optional value".

This is my view controller that sends the info:

var eventDetailscontrollers: EventDetailsController!

func showDetailView(event: Events){
    let mainStoryBoarrd: UIStoryboard = UIStoryboard(name:"Main", bundle:nil)
    let detailsViewController: UIViewController = mainStoryBoarrd.instantiateViewControllerWithIdentifier("eventDetailsID")
    eventDetailscontrollers?.event = event //this sends all info as nil
    eventDetailscontrollers.event = event //this causes error

    print(event.name)      // this prints event name fine

    self.presentViewController(detailsViewController, animated: true, completion: nil)
}

This is the class I send the data to:

var event: Events!   {
    didSet  {
        eventPriceLabel.text = event!.date //does nothing
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    let string = event?.name
    print(string)// prints null
}

My Events class:

class Events: NSObject {
    var name: String!
    var date: String!
    var address: String!
    var ticketPrice: Int!

解决方案

The issue is here:

func showDetailView(event: Events){
    let mainStoryBoarrd: UIStoryboard = UIStoryboard(name:"Main", bundle:nil)
    let detailsViewController: UIViewController = mainStoryBoarrd.instantiateViewControllerWithIdentifier("eventDetailsID")
    eventDetailscontrollers?.event = event //this sends all info as nil
    eventDetailscontrollers.event = event //this causes error

    print(event.name)      // this prints event name fine

    self.presentViewController(detailsViewController, animated: true, completion: nil)
}

You have two variables that should be the same:

func showDetailView(event: Events){
    let mainStoryBoarrd: UIStoryboard = UIStoryboard(name:"Main", bundle:nil)
    eventDetailscontrollers = mainStoryBoarrd.instantiateViewControllerWithIdentifier("eventDetailsID")
    eventDetailscontrollers?.event = event //this sends all info as nil
    eventDetailscontrollers.event = event //this causes error

    print(event.name)      // this prints event name fine

    self.presentViewController(eventDetailscontrollers, animated: true, completion: nil)
}

这篇关于发送到新的View Controller的数据为零,展开可选值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆