早上好,我按照本教程 我能够添加一个新的联系人并检索现有的联系人,但我想要完成的是保存我在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
答案 0 :(得分:1)
NSUserDefaults
由property list支持,因此您只能向其添加属性列表对象(see list of compatible objects here)的对象。
CNContact
不在该列表中,因此您无法直接将其添加到NSUserDefaults
。
解决此问题的一种方法是手动将CNContact
对象序列化/反序列化为兼容的内容,例如NSDictionary
或NSData
(like in this answer),然后您可以将其保存到{ {1}}。