Добавить массив к пользовательским значениям по умолчанию, не удаляя исходную информацию пользовательского по умолчанию - PullRequest
0 голосов
/ 01 июня 2019

Итак, я делаю массив добавленных объектов.Моя проблема в том, что я хочу добавить объекты, не удаляя исходные объекты.Как только я добавляю объекты, я вижу их.Но когда я добавляю новые объекты, старые объекты исчезают и заменяются более старыми объектами.Как я могу сохранить оба через 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 голосов
/ 01 июня 2019

Убедитесь, что вы загружаете self.array с текущими значениями из UserDefaults. Затем вы можете обновить массив и затем обновить 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 на массив имен учетных записей.

...