iOS быстро очистит все данные массива, сохраненные как объект в пользовательских ошибках по умолчанию, используя NSKeyedArchiver - PullRequest
0 голосов
/ 07 марта 2019

Я сохранил данные, т.е. все уведомления как объект уведомления, используя NSKeyedArchiver:

        let notificationobj = NotificationObj(userid: userid, type: type, image:image, body:body, title:title, category:category, badge:badge)
        notificationarr.append(notificationobj)         
        let encodedData = NSKeyedArchiver.archivedData(withRootObject: notificationarr)
        UserDefaults.standard.set(encodedData, forKey: "notificationarr")

И неархивированные данные в виде списка массивов:

    self.encodedData = UserDefaults.standard.data(forKey: "notificationarr")
    if((self.encodedData != nil)){
        self.notificationLists = (NSKeyedUnarchiver.unarchiveObject(with: self.encodedData!) as? [NotificationObj])!
        print("NOTIFICATIONLISTVIEWDIDLOAD : \(self.notificationLists)")
    }else{
        tableView.reloadData()
    }

Как очистить данные, т. Е. Уведомления об удалении всех / нажатии всех кнопок?

Я попытался описанным ниже способом, но данные снова загружаются при получении другого уведомления

    self.notificationLists.removeAll()
    //self.notificationarr.removeAll()
    self.encodedData?.removeAll()
    self.tableView.reloadData()
    let defaults = UserDefaults.standard
    self.encodedData = NSKeyedArchiver.archivedData(withRootObject: self.notificationLists)
    print("encodedata \(self.encodedData)")
    defaults.set(self.encodedData, forKey: "notificationarr")
    defaults.synchronize()
...