Хранение словаря в swift в постоянном хранилище

этот код здесь выдает ошибку, когда я запускаю приложение

var dic :[NSObject: AnyObject] = ["name":"steph" , "status": "unemployed"]

NSUserDefaults.standardUserDefaults().setObject(array, forKey: "diction")

var retrievedDict = NSUserDefaults.standardUserDefaults().objectForKey("diction")! as NSDictionary

let g = dic["name"]

println(g)

что с этим не так?


person JustABeginner    schedule 22.02.2015    source источник
comment
Какую ошибку выдает?   -  person donnywals    schedule 22.02.2015
comment
Быстрое динамическое приведение не удалось   -  person JustABeginner    schedule 22.02.2015


Ответы (2)


Проблема в том, что ключ словаря должен быть строкой. Поэтому вместо объявления [NSObject: AnyObject] вы должны объявить его как [String: AnyObject]. Также вы пытаетесь загрузить его из dic, но вам нужно загрузить его из retrievedDict.

обновление: Xcode 7.2 • Swift 2.1.1

let dic:[String: AnyObject] = ["name":"steph" , "status": "unemployed"]

NSUserDefaults().setObject(dic, forKey: "diction")

if let retrievedDict = NSUserDefaults().dictionaryForKey("diction") {
    if let g = retrievedDict["name"] as? String {
        print(g)
    }
}
person Leo Dabus    schedule 22.02.2015

Ваш код в порядке. Ваша единственная проблема в том, что вы передаете неправильный объект в свой NSUserDefaults. Вы должны передать dic вместо array.

Итак, измените это:

NSUserDefaults.standardUserDefaults().setObject(array, forKey: "diction")

к тому, что:

NSUserDefaults.standardUserDefaults().setObject(dic, forKey: "diction")
person Christian    schedule 22.02.2015