我正试图在我的NSUserDefaults上存储一个NSUserDefaults。但据我所知,默认设置不会采用CKRecords,而是会使用NSData。
我正在寻找关于如何将我的CKRecord转换为NSData的帮助。有可能做到吗?
To NSData
func set_activeLinkRequest(record: CKRecord) {
print("PublicUsers - set_activeLinkRequest \(record)")
var data = NSData()
// convert the record into NSData
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "activeLinkRequest")
NSUserDefaults.standardUserDefaults().synchronize()
}回到CKRecord
func get_activeLinkRequest() -> CKRecord {
let record = NSUserDefaults.standardUserDefaults().objectForKey("activeLinkRequest") as! NSData
// convert NSDate into CKRecord
print("PublicUsers = get_activeLinkRequest \(value)")
return record
}发布于 2016-03-02 20:05:34
这是解决办法,希望它能帮助到别人。
CKRecord to NSData to NSUserDefaults
func set_activeLinkRequest(record: CKRecord) {
print("PublicUsers - set_activeLinkRequest \(record)")
let data = NSKeyedArchiver.archivedDataWithRootObject(record)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "activeLinkRequest")
NSUserDefaults.standardUserDefaults().synchronize()
}NSUserDefaults to NSData to CKRecord
func get_activeLinkRequest() -> CKRecord {
let data = NSUserDefaults.standardUserDefaults().objectForKey("activeLinkRequest") as! NSData
let record = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! CKRecord
print("PublicUsers = get_activeLinkRequest \(record)")
return record
}发布于 2020-11-09 06:40:11
Swift 5
func setActiveLinkRequest(record: CKRecord) {
do {
let data = try NSKeyedArchiver.archivedData(withRootObject: record, requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: "activeLinkRequest")
} catch {
print(error)
}
}
func getActiveLinkRequest() -> CKRecord? {
guard let data = UserDefaults.standard.object(forKey: "activeLinkRequest") as? Data else {
return nil
}
do {
let record = try NSKeyedUnarchiver.unarchivedObject(ofClass: CKRecord.self, from: data)
return record
} catch {
print(error)
return nil
}
}https://stackoverflow.com/questions/35737626
复制相似问题