Я храню постоянные данные в моем приложении, используя NSCoder, как показано ниже:
class UserNotification: NSObject, NSCoding {
var message: String!
init(message: String) {
self.message = message
}
required convenience init(coder aDecoder: NSCoder) {
let message = aDecoder.decodeObject(forKey: "message") as! String
self.init(message: message)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(message, forKey: "message")
}
}
Вот как они загружаются в приложение:
let defaults = UserDefaults.standard
if (defaults.object(forKey: "userNotifications") != nil) {
let decoded = defaults.object(forKey: "userNotifications") as! Data
let decodedUserNotifications = NSKeyedUnarchiver.unarchiveObject(with: decoded as Data) as! [UserNotification]
userNotifications = decodedUserNotifications
}
Я также включил способ очистки всех сохраненных данных. Для очистки я реализовал:
let newListData = NSKeyedArchiver.archivedData(withRootObject: userNotifications)
let defaults = UserDefaults.standard
defaults.set(newListData, forKey: "userNotifications")
defaults.synchronize()
Все объекты уведомлений пользователей хранятся в глобально доступном массиве:
userNotifications = [UserNotification]()
Я хотел бы убедиться, что все постоянные данные удалены после того, как пользователь их очистил. Я просматривал папку моего симулятора (~ / Library / Developer / CoreSimulator / Devices), чтобы найти постоянные данные и посмотреть, удаляются ли они, но мне нигде не удалось найти их.
Кажется, что все работает при запуске приложения (сохранение данных, стирание и т. Д.), Но я хотел бы убедиться, что все данные будут удалены на устройстве правильно. Сохраняются некоторые эскизы, и поэтому я хочу убедиться, что они действительно стираются и не занимают ненужного места.
Итак, мой вопрос, где хранятся данные при использовании NSCoder? Я могу найти локально сохраненные изображения с помощью FileManager, но закодированные данные нигде не найдены.