首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CKRecord在NSData中的转换

CKRecord在NSData中的转换
EN

Stack Overflow用户
提问于 2016-03-02 02:56:27
回答 2查看 692关注 0票数 0

我正试图在我的NSUserDefaults上存储一个NSUserDefaults。但据我所知,默认设置不会采用CKRecords,而是会使用NSData。

我正在寻找关于如何将我的CKRecord转换为NSData的帮助。有可能做到吗?

To NSData

代码语言:javascript
复制
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

代码语言:javascript
复制
func get_activeLinkRequest() -> CKRecord {
    let record = NSUserDefaults.standardUserDefaults().objectForKey("activeLinkRequest") as! NSData

    // convert NSDate into CKRecord

    print("PublicUsers = get_activeLinkRequest \(value)")
    return record
}
EN

回答 2

Stack Overflow用户

发布于 2016-03-02 20:05:34

这是解决办法,希望它能帮助到别人。

CKRecord to NSData to NSUserDefaults

代码语言:javascript
复制
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

代码语言:javascript
复制
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
}
票数 3
EN

Stack Overflow用户

发布于 2020-11-09 06:40:11

Swift 5

代码语言:javascript
复制
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
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35737626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档