2017-09-23 5 views
0

Je gardais un dictionnaire de type [String : Any] à UserDefaults,Valeur booléenne obtenue à partir de l'impression de UserDefaults 0 ou 1, même lors de l'enregistrement en tant que Tout

Lorsque j'imprime le dictionnaire avant d'enregistrer à UserDefaults, la valeur booléenne des impressions dictionnaire comme vrai ou faux, Cependant quand je récupère le dictionnaire il imprime comme 0 ou 1.

J'ai vu des questions semblables de SO où le conseil devait employer Any au lieu de AnyObject que j'ai fait.

Voici le code que j'utilise, s'il vous plaît avis où je vais mal.

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 

Répondre

1

C'est normal.

Lorsqu'un objet est enregistré UserDefaults une valeur numérique est ponté à NSNumber et la représentation de true et false en NSNumber est 10 et.

Vous obtenez vrai true et false retour avec

dict["available"] as! Bool