我来自JavaScript,我习惯通过API获取数据,然后在整个应用程序中使用它(只要我不需要重新加载页面)。例如,如果我写var user = $.get('/get/user')
,我可以在任何地方使用user
变量,即使我加载了新的视图/页面。
据我了解,每个View Controller就像一个新页面。因此,如何在应用程序启动时使用我的用户并在整个应用程序中使用它而不将其存储在Core Data或类似的地方?
我可以在应用程序启动时实例化一个类来获取所有初始值,然后将它们存储起来供各地使用吗?如果是这样,怎么样?
答案 0 :(得分:2)
您可以按照单身模式进行操作。这是一个对象,它包含对自身的静态引用,并且使用类方法访问此实例。
class YourSingletonClass {
static let sharedInstance = YourSingletonClass()
func someMethod() -> Void {
}
}
// Other part of the app
YourSingletonClass.sharedInstance.someMethod()
另一种方法是创建一个对象(类的实例),使用您在内存中保留所需的数据填充变量,然后将此实例从View Controller传递到View Controller。
var myVar = YourClassForMemory()
myVar.value = 1
myVar.otherValue = 2
然后,您可以在其他类型为YourClassForMemory的View控件上创建一个属性,并在初始化View Controller并传递对象时使用此对象进行设置。这可以在prepareForSegue中完成,如果使用Storyboard segues,或者作为init方法,或者只是类中的公共属性。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "mySegue" {
var myVar = YourClassForMemory()
myVar.value = 1
myVar.otherValue = 2
(segue.destinationViewController as! SomeViewController).myVar = myVar
}
}