는 다음 테스트 코드가 I :에 println (DATA0)의Swift NSUserDefaults가 사전을 저장하지 않습니까?
func testSaveDictionary() {
let userDefaults = NSUserDefaults.standardUserDefaults()
var jo = [
"a" : "1.0",
"b" : "2.0"
]
let akey = "aKey"
userDefaults.setObject(jo, forKey: akey)
var isOk = userDefaults.synchronize()
var data0 = userDefaults.dictionaryForKey(akey)
println(data0)
}
출력을 무기 호입니다.
내 코드에 문제가 있습니까? Swift Dictionary는 현재 또는 최종 릴리스에서 속성 목록으로 간주됩니까?
바로 위에! 핵심은 명시 적으로 선언하는 것입니다 : var jo : [NSObject : AnyObject] 위에서 언급 한대로. – Sean
또 다른 방법은 (어떤 이유로 든 선언을 명시 적으로 만들 수없는 경우) "as NSDictionary"를 사용하는 것입니다. userDefaults.setObject ((jo as NSDictionary), forKey : aKey) – winterized
Swift 2.0에서는 NSUserDefault 사전이 매핑됩니다. as [String : AnyObject].실제로 Int (예 :)를 키로 사용하여 사전을 저장하려고하면 런타임에 실패합니다. Apple이 제공하는 사소한 메소드를 사용하는 것이 좋지만 런타임 오류를 안전하게 지원하고 피할 수있는 강력한 유형의 메소드로 확장을 정의 할 수 있습니다. – atxe