Swift:无法将数组保存到UserDefaults

时间:2017-01-08 15:24:44

标签: arrays swift save nsuserdefaults

我有一个名为Stop的班级。该类实现NSCoding。我可以将Stop的实例保存到UserDefaults,没有任何问题。到现在为止还挺好。我的问题是保存Array个停靠点。这是我尝试的:

private func save(stopArray array: [Stop],withKey key: String) {
        let data = NSKeyedArchiver.archivedData(withRootObject: array)
        self.userDefaults.set(data, forKey: key)
        self.userDefaults.synchronize()
    }

private func loadStopArray(key: String) -> [Stop]? {
        guard let data = self.userDefaults.object(forKey: key) as? Data else {
            return nil
        }
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? [Stop]
}

现在,每次调用loadStopArray时,我都会得到一个空数组。不是,只是一个空数组。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您在加载ObjectData时感到困惑。 self.userDefaults.object()self.userDefaults.data()会产生数据。

private func loadStopArray(key: String) -> [Stop]? {
        if let data = self.userDefaults.data(forKey: key) {
            return NSKeyedUnarchiver.unarchiveObject(with: data) as? [Stop]
        } else {
            return nil
        }
}