Xcode - 从模拟器访问持久数据(NSCoder)

时间:2018-04-26 12:12:53

标签: swift xcode simulator persistent nscoder

我使用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找到本地存储的图像,但无法找到编码数据。

0 个答案:

没有答案