Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将数组附加到UserDefaults,而不删除原始UserDefault信息_Arrays_Swift_Save_Userdefaults - Fatal编程技术网

Arrays 将数组附加到UserDefaults,而不删除原始UserDefault信息

Arrays 将数组附加到UserDefaults,而不删除原始UserDefault信息,arrays,swift,save,userdefaults,Arrays,Swift,Save,Userdefaults,所以我在制作一个附加对象的数组。我的问题是,我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但当我添加新对象时,旧对象将消失,并被旧对象替换。如何通过默认设置保持这两种状态 到目前为止,我做了很多研究,但没有发现任何东西 case 0: self.array.append("Instagram") UserDefaults.standard.set(self.array, forKey: "addedAccounts")

所以我在制作一个附加对象的数组。我的问题是,我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但当我添加新对象时,旧对象将消失,并被旧对象替换。如何通过默认设置保持这两种状态

到目前为止,我做了很多研究,但没有发现任何东西

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)

无错误消息

请确保使用UserDefaults中的当前值加载
self.array
。然后可以更新数组,然后使用更新的数组更新UserDefaults

在一些适当的初始化过程中:

self.array = UserDefaults.standard.array(forKey: "addedAccounts") as? [String] ?? []
然后您的
开关

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")
}
顺便说一句-用帐户名数组替换
开关将简单得多。

一个
打印什么(UserDefaults.standard.value(forKey:“addedAccounts”)
给出什么?