-1

I want to save array from json to user default, I'll get the array when I print it. When I retrieve it in different view controller I only get the last array. So how to retrieve all data user default in different view controller.

This is how I save my code in user default

first view controller

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

output:

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

retrieve it in second view controller

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

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

output retrieve

kode_pelaksanaan : ELR2018050004

i want output second view controller

kode_pelaksanaan : ELR2018120005
kode_pelaksanaan : ELR2018120004
kode_pelaksanaan : ELR2018120003
kode_pelaksanaan : ELR2018120001
kode_pelaksanaan : ELR2018050004
Bindiya H
  • 153
  • 5
  • 9
edo oktarifa
  • 63
  • 1
  • 13
  • You need to provide more information. How is `item` declared? What is the type of `.string`? What did you `print` to get these outputs? – Kamran Dec 18 '18 at 04:12
  • You are saving only one string in UserDefaults. So that only you are getting a single value. You have to save a array of strings in UserDefaults. then only you will get all values. – Kathiresan Murugan Dec 18 '18 at 06:58

3 Answers3

0

Your code snippet doesn't provide enough information.

Here is an example of how array is stored & retrieved from the 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)
}
Sachin Raut
  • 328
  • 3
  • 13
0

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)
        }
    }
}

usage

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

  print(UDWrapper.getArray(key: "myarray") ?? "")
Giang
  • 3,553
  • 30
  • 28
-1

Use like this:

    // 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
  • 1,949
  • 1
  • 17
  • 24