Я хочу сохранить массив из 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
Вы сохраняете только одну строку в UserDefaults. Так что только вы получаете одно значение. Вам нужно сохранить массив строк в UserDefaults. только тогда вы получите все значения.
В вашем фрагменте кода недостаточно информации.
Вот пример того, как массив сохраняется и извлекается из 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)
}
Это очень простой способ проголосовать против ответа. Но сложно объяснить, что не так? Почему???
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") ?? "")
Вам необходимо предоставить дополнительную информацию. Как заявлен
item
? Что это за тип.string
? Что у тебяprint
, чтобы получить эти выходы?