将variables从一个Swift类传递给另一个类的最佳方法是什么?

假设我在一个类ViewController定义了variables,并想从另一个类访问该variables,比如说BLEHandler 。 我该如何去做呢? 我遇到了NSUserDefaults麻烦,所以除此之外的方法将不胜感激。

有可能你可以在viewControllers之间传递值的方法例如

  • PrepareForSegue
  • NSNotificationCenter
  • 代表
  • 独生子

不同的方式在不同的情况下使用。

如果您使用prepareFoSegue – 在执行segue时想要通过时使用

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { //Use below to get reference,so that you can pass value //segue.destinationViewController //segue.sourceViewController } 

如果使用通知中心 – 盲通知,一个vc发送消息,可能多个接收。 在发送消息vc

  NSNotificationCenter.defaultCenter().postNotificationName(, object: ) 

在接收消息vc先注册

  NSNotificationCenter.defaultCenter().addObserver(, selector: , name: , object: ) 

比你从select器得到的价值

不要忘记删除

  NSNotificationCenter.defaultCenter().removeObserver(, name: , object: ) 

如果您使用委托 – 接收者和发件人首先有一个连接。 有关于此的post,我不会举例。

如果你使用单身 – 你必须清楚单身人士的生活圈。 我不build议通过这种方式来传递价值。

别担心

 var firstmyvar = "Any" let secondview = self.storyboard?.instantiateViewControllerWithIdentifier("secondview") as SecondViewController secondview.myvar = firstmyvar self.presentViewController(secondview, animated: false, completion: nil) 

一种方法是在应用程序委托中创build一个variables。 它的全局到你的视图控制器。

 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let aVariable = appDelegate.someVariable