Swift如何在默认设置中保存联系人

时间:2016-05-25 17:26:43

标签: swift contacts

早上好,我按照本教程 我能够添加一个新的联系人并检索现有的联系人,但我想要完成的是保存我在mutableArray中添加的列表并使用该数组填充我的TableView。我收到此错误

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

下面

 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")

    }

感谢任何帮助。

此致 JZ

1 个答案:

答案 0 :(得分:1)

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

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

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