kofekhauz
kofekhauz

Reputation: 1

Unable to retrieve dictionary data from Userdefaults in Swift 3

Do you guys can bring some light on the use of dictionaries with UserDefaults ?

What I want to get is to pass a certain dictionary from a view controller to another one using UserDefaults.

var dict = [String : AnyObject?]()
dict = ["Name": "Henri", "Group": "A", "Category": "4"]
UserDefaults.standard.set.(dict, forKey: "MyDict")

Then I try to retrieve the data

let retrieveDict = UserDefaults.standard.dictionary(forKey:"MyDict")

I got a nice nil answer in the console. When I try with int or float types it is fine... Is there anything I am missing to make this dictionary ?

Upvotes: 0

Views: 871

Answers (1)

kamwysoc
kamwysoc

Reputation: 6859

First of all, your code won't compile.

Second, a dictionary with type [String, AnyObject?] make no sense because you'll be not able to set nil in UserDefaults. You should use empty String maybe for that purpose.

The working code could look like that :

    var dict = [String : Any]() // or maybe [String : String] if you sure about value type
    dict = ["Name": "Henri", "Group": "A", "Category": "4"]
    UserDefaults.standard.set(dict, forKey: "MyDict")
    let retrieveDict = UserDefaults.standard.dictionary(forKey:"MyDict")

Hope it helps you :)

Upvotes: 2

Related Questions