使用swift将数组保存和检索为用户默认值

时间:2018-12-18 03:50:07

标签: arrays json swift swifty-json userdefaults

我想将数组从json保存到用户默认设置,我将在打印时得到该数组。当我在不同的视图控制器中检索它时,我只会得到最后一个数组。 那么如何在不同的视图控制器中检索所有用户默认的数据。

这是我将代码保存在用户默认设置中的方式

第一视图控制器

public new void Add(T Subordinate)
{
    T Manager = Subordinate.ParentInstance;

    // then it will be possible to see the current value of
    // the property "LastName" for Anakin with "Manager.LastName"
}

输出:

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

3 个答案:

答案 0 :(得分:0)

您的代码段未提供足够的信息。

以下是如何从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)
}

答案 1 :(得分:-1)

像这样使用:

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

答案 2 :(得分:-1)

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") ?? "")