如何在applicationWillTerminate中保存全局数组并在应用程序函数中重新加载它们?

时间:2016-03-08 16:48:44

标签: ios swift nsuserdefaults appdelegate

所以我一直在尝试为我的移动应用开发类创建一个应用程序,我需要找到一个解决我遇到的问题的解决方案,当我保存一个名为“events”的全局数组时。

这里我尝试在AppDelegate中重新加载已保存的事件类,但它在主屏幕视图控制器中没有更改:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    //Override point for customization after application launch.
    //Load the events that were saved when application was terminated
    let eventKey = NSUserDefaults.standardUserDefaults()
    Global.events = (eventKey.arrayForKey("savedEvents") as? [Event])!
    return true
}

以下是有人退出应用时调用的函数:

func applicationWillTerminate(application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    let myEvents = Global.events
    NSUserDefaults.standardUserDefaults().setObject(myEvents, forKey: "savedEvents")
    NSUserDefaults.standardUserDefaults().synchronize()
}

这可能只是显示此数组的viewcontroller中的错误,但如果您发现代码有问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

两个问题:

  • 在iOS中,没有“有人退出应用程序”这样的事情,因此你所做的事情不太可能奏效,因为永远不会调用applicationWillTerminate。在应用程序停用或后台运行时保存。

  • 事件数组不能神奇地保存在用户默认值中,因为Event不是Property List类型。您需要将事件存档并存档数组。