Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从UserDefaults打印获得的布尔值为0或1,即使保存为“任意”_Swift_Nsuserdefaults_Userdefaults - Fatal编程技术网

Swift 从UserDefaults打印获得的布尔值为0或1,即使保存为“任意”

Swift 从UserDefaults打印获得的布尔值为0或1,即使保存为“任意”,swift,nsuserdefaults,userdefaults,Swift,Nsuserdefaults,Userdefaults,我正在将[String:Any]类型的字典保存到UserDefaults 当我在保存为UserDefaults之前打印字典时,字典中的布尔值打印为true或false,但是当我检索字典时,它打印为0或1 我也看到过类似的问题,其中的建议是使用任何对象,而不是我使用的任何对象 下面是我正在使用的代码,请告诉我哪里出了问题 static var profileDetails : [String: Any]{ get{ let defaults = UserDef

我正在将[String:Any]类型的字典保存到UserDefaults

当我在保存为UserDefaults之前打印字典时,字典中的布尔值打印为true或false,但是当我检索字典时,它打印为0或1

我也看到过类似的问题,其中的建议是使用任何对象,而不是我使用的任何对象

下面是我正在使用的代码,请告诉我哪里出了问题

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
这很正常

将对象保存到UserDefault时,任何数值都会桥接到NSNumber,NSNumber中的true和false表示为1和0

你得到了真实和虚假的回报

dict["available"] as! Bool