2017-09-23 44 views
0

我保存[String : Any]类型UserDefaults的字典,布尔值,即使保存为任何

当我保存到UserDefaults,从字典打印布尔值之前打印该词典为true或false,但是当我检索字典时,它将打印为0或1.

我看过类似的SO问题,其中的建议是使用Any而不是AnyObject我做了。

以下是我正在使用的代码,请指出我出错的地方。

static var profileDetails : [String: Any]{ 
    get{ 
     let defaults  = UserDefaults.standard 
     let profileDetailsDict = defaults.object(forKey: "profileDetails") as? [String: Any] ?? [String : Any]() 
     print("Get profileDetailsDict : \(profileDetailsDict), type: \(type(of: profileDetailsDict))") 
     return profileDetailsDict 
    } 
    set (profileDetailsDict){ 
     let defaults  = UserDefaults.standard 

     print("Set profileDetailsDict: \(profileDetailsDict)") 
     defaults.set(profileDetailsDict, forKey: "profileDetails") 
    } 
} 


let profileDetailsDict = ["availabilityTimesDict": ["Saturday": ["times": [["startTime": 9:00 AM, "endTime": 1:30 PM], ["startTime": 2:30 PM, "endTime": 6:00 PM]], "weekday": Saturday, "available": true], "Tuesday": ["times": [["startTime": 2:30 PM, "endTime": 6:00 PM]], "weekday": Tuesday, "available": true]], "mobileNumber": "8458465845", "namesArray": ["name1", "name2"]] as [String: Any] 


// Setting profileDetailsDict 
profileDetails = profileDetailsDict 

// Retrieving profileDetailsDict 
let userDetails = profileDetails 

回答

1

这很正常。

当一个对象在NSNumber保存到UserDefaults任何数值被搭桥,以NSNumbertrue表示和false10

你得到真正的truefalse回来

dict["available"] as! Bool 
相关问题