试图在appdelegate

时间:2016-02-24 07:40:06

标签: ios xcode swift appdelegate

我试图在应用程序关闭时使用userdefaults保存数组,但是当我在app委托中调用方法时,我会收到此错误“调用参数'数据'时缺少参数”

来自单独类的代码:

func saveDataForKey(key: String, data: [Item]){
      let arrayData = NSKeyedArchiver.archivedDataWithRootObject(data)
    NSUserDefaults.standardUserDefaults().setObject(arrayData, forKey: ArrayKey)
}
来自app delegate的

代码:

var ds = DataStore()//this is the separate class

func applicationDidEnterBackground(application: UIApplication) {

    ds.saveDataForKey(key: String, data: [Item])//this is where i get the error   
}

1 个答案:

答案 0 :(得分:0)

请勿使用app delegate。请改用NSNotificationCenter。在您的班级(可能是DataStore)注册,以收听UIApplicationDidEnterBackgroundNotification等系统通知。您可以使用选择器或块。例如(选择器)你可以这样做:

NSNotificationCenter.defaultCenter().addObserver(self,
        selector: "WRITE A METHOD AS EXPLAINED BELOW",
            name: UIApplicationDidEnterBackgroundNotification,
          object: nil)

在这种情况下,选择器是一种只能将NSNotification作为其唯一输入的方法。你可能需要用这种方法包装你的saveDataForKey