将数组追加到UserDefaults而不删除原始UserDefault信息

时间:2019-06-01 18:25:14

标签: arrays swift save userdefaults

因此,我正在制作一组附加对象。我的问题是我想添加对象而不删除原始对象。附加对象后,便会看到它们。但是,当我添加新对象时,旧对象消失了,由旧对象代替。如何通过NSUserDefaults保留两者?

到目前为止,我已经做了大量研究,但没有发现任何东西。

case 0:
            self.array.append("Instagram")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 1:
            self.array.append("Snapchat")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 2:
            self.array.append("VSCO")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 3:
            self.array.append("Pinterest")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 4:
            self.array.append("Tiktok")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 5:
            self.array.append("Twitter")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 6:
            self.array.append("Facebook")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 7:
            self.array.append("Google")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 8:
            self.array.append("Flickr")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 9:
            self.array.append("iFunny")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 10:
            self.array.append("Tumblr")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 11:
            self.array.append("Viber")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 12:
            self.array.append("Vine")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        case 13:
            self.array.append("WhatsApp")
            UserDefaults.standard.set(self.array, forKey: "addedAccounts")
        default:
            print("Error")
            print(self.array)

没有错误消息

1 个答案:

答案 0 :(得分:0)

确保使用UserDefaults中的当前值加载self.array。然后,您可以更新阵列,然后使用更新后的阵列更新UserDefaults。

在进行一些适当的初始化期间:

self.array = UserDefaults.standard.array(forKey: "addedAccounts") as? [String] ?? []

然后您的switch

var newVal: String?
switch whatever {
case 0: newVal = "Instagram"
case 1: newVal = "Snapchat"
// and the rest
}
if let newVal = newVal {
    self.array.append(newVal)
    UserDefaults.standard.set(self.array, forKey: "addedAccounts")
}

顺便说一句-用一组帐户名称替换switch会容易得多。