Сохранить и получить массив по умолчанию для пользователя с помощью swift

Я хочу сохранить массив из json по умолчанию для пользователя, я получу массив, когда распечатаю его. Когда я получаю его в другом контроллере представления, я получаю только последний массив. Итак, как получить все данные пользователя по умолчанию в другом контроллере представления.

Вот как я сохраняю свой код по умолчанию для пользователя

контроллер первого представления

let kode_pelaksanaan = item["kode_pelaksanaan"].string
UserDefaults.standard.set(kode_pelaksanaan, forKey: "kode_pelaksanaan")

вывод:

kode_pelaksanaan : ELR2018120005
kode_pelaksanaan : ELR2018120004
kode_pelaksanaan : ELR2018120003
kode_pelaksanaan : ELR2018120001
kode_pelaksanaan : ELR2018050004

получить его во втором контроллере представления

let data = UserDefaults.standard.object(forKey: "kode_pelaksanaan")

let parameter =  [
            "request" : "{\"requestMethod\":\"detail_selflearning\",\"user\":\"\(user)\",\"kode_pelaksanaan\":\"\(data ?? "0")\"}"
        ]

вывод получить

kode_pelaksanaan : ELR2018050004

Я хочу выводить контроллер второго представления

kode_pelaksanaan : ELR2018120005
kode_pelaksanaan : ELR2018120004
kode_pelaksanaan : ELR2018120003
kode_pelaksanaan : ELR2018120001
kode_pelaksanaan : ELR2018050004

Вам необходимо предоставить дополнительную информацию. Как заявлен item? Что это за тип .string? Что у тебя print, чтобы получить эти выходы?

Kamran 18.12.2018 05:12

Вы сохраняете только одну строку в UserDefaults. Так что только вы получаете одно значение. Вам нужно сохранить массив строк в UserDefaults. только тогда вы получите все значения.

Kathiresan Murugan 18.12.2018 07:58
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
2
794
3

Ответы 3

В вашем фрагменте кода недостаточно информации.

Вот пример того, как массив сохраняется и извлекается из UserDefaults.

var myArray = [0,1,2]

override func viewDidLoad()
{
    super.viewDidLoad()
    UserDefaults.standard.set(myArray, forKey: "yourArray")

    let data = UserDefaults.standard.object(forKey: "yourArray")!
    print(data)
}

Используйте так:

    // To save array in UserDefault
    let names = ["John", "Alex", "Matien", "Flex"]
    UserDefaults.standard.set(names, forKey: "names")

    // To get names array from UserDefault safely.
    if let allNames = UserDefaults.standard.object(forKey: "names") as? [String] {
        print(allNames)
    }

Это очень простой способ проголосовать против ответа. Но сложно объяснить, что не так? Почему???

nitin.agam 18.12.2018 07:55

UserDefaults + Wrapper

    final class UDWrapper {
        class func setArray(key: String, value: NSArray) {
            setObject(key: key, value: value)
        }

        class func getArray(key: String) -> [Any]? {
            return UserDefaults.standard.array(forKey: key)
        }

    class func setObject(key: String, value: Any?) {
        if value == nil {
            UserDefaults.standard.removeObject(forKey: key)
        } else {
            UserDefaults.standard.set(value, forKey: key)
        }
    }
}

использование

  let array: NSArray = ["Hello, World!", 42]
  UDWrapper.setArray(key: "myarray", value: array)

  print(UDWrapper.getArray(key: "myarray") ?? "")

Другие вопросы по теме