首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UserDefaults中保存CNContact

在UserDefaults中保存CNContact
EN

Stack Overflow用户
提问于 2017-10-31 12:59:08
回答 1查看 402关注 0票数 0

我正在尝试将CNContact详细信息保存到我的UserDefaults中,但失败了。还有别的办法能救CNContact吗?

代码语言:javascript
运行
复制
struct User {
    var firstName: String = ""
    var lastName: String = ""
    var email: String = ""
    var phoneNumber: String = ""
    var company: String = ""
    var assistantContact: CNContact?

    init(firstName: String, lastName: String, email: String, phoneNumber: String, company: String, assistantContact: CNContact? = nil) {
        self.firstName = firstName
        self.lastName = lastName
        self.email = email
        self.phoneNumber = phoneNumber
        self.company = company
        self.assistantContact = assistantContact
    }

    func encode() -> Dictionary<String, AnyObject> {

        var dictionary : Dictionary = Dictionary<String, AnyObject>()
        dictionary["firstName"] = firstName as AnyObject?
        dictionary["lastName"] = lastName as AnyObject?
        dictionary["email"] = email as AnyObject?
        dictionary["phoneNumber"] = phoneNumber as AnyObject?
        dictionary["company"] = company as AnyObject?
        dictionary["assistantContact"] = assistantContact as AnyObject?
        return dictionary

    }

    init(dictionary: Dictionary<String, AnyObject>) {
        if let firstName = dictionary["firstName"] as? String {
            self.firstName = firstName
        }
        if let lastName = dictionary["lastName"] as? String {
            self.lastName = lastName
        }
        if let email = dictionary["email"] as? String {
            self.email = email
        }
        if let phoneNumber = dictionary["phoneNumber"] as? String {
            self.phoneNumber = phoneNumber
        }
        if let company = dictionary["company"] as? String {
            self.company = company
        }
        if let assistantContact = dictionary["assistantContact"] as? CNContact {
            self.assistantContact = assistantContact
        }
    }

}
EN

回答 1

Stack Overflow用户

发布于 2017-11-22 13:03:10

首先使用编码联系人数组。

代码语言:javascript
运行
复制
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: contactsArray)

现在将encodedData保存在UserDefaults中。

对于解码触点阵列,

代码语言:javascript
运行
复制
if let contacts: [CNContact] = decodedData as? [CNContact] {
            //Decoded Contacts Array
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47028160

复制
相关文章

相似问题

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