【问题标题】:Swift how may I save contacts in defaultsSwift我如何将联系人保存在默认值中
【发布时间】:2016-05-25 17:26:43
【问题描述】:

大家早上好,我学习了这个教程 我可以添加新联系人并检索现有联系人,但我想要完成的是将添加的列表保存在 mutableArray 中并使用该数组填充我的 TableView。我收到此错误

联系人介绍[5166:4971615] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试插入非属性列表对象( "!$_, value=>\"\n), emailAddresses=(\n \"!$_, value=>\"\n), postalAddresses=(\n)>" ) 为关键联系人Key'

这里

 func insertNewObject(sender: NSNotification) {

        print("How Many Times am I getting here ??")

        if let contact = sender.userInfo?["contactToAdd"] as? CNContact {
            objects.insert(contact, atIndex: 0)
            let indexPath = NSIndexPath(forRow: 0, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }

        print("How Many Objects ",objects.count)

        let contactArray = objects as [CNContact]
        let prefs = NSUserDefaults.standardUserDefaults()
        prefs.setValue(contactArray, forKey: "contactsKey")

    }

任何帮助表示赞赏。

问候 江泽

【问题讨论】:

标签: swift contacts


【解决方案1】:

NSUserDefaultsproperty list 支持,因此您只能向其添加属性列表对象 (see list of compatible objects here)。

CNContact 不在该列表中,因此您不能直接将其添加到NSUserDefaults

解决此问题的一种方法是将CNContact 对象手动序列化/反序列化为兼容的对象,例如NSDictionaryNSData (like in this answer),然后您可以将其保存到NSUserDefaults

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多