我尝试将 CNContact 详细信息保存到我的 UserDefaults 中,但失败了。
还有其他方法可以保存 CNContact
吗?
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
}
}
}
最佳答案
首先使用编码联系人数组。
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: contactsArray)
现在将编码数据保存在 UserDefaults 中。
对于解码联系人数组,
if let contacts: [CNContact] = decodedData as? [CNContact] {
//Decoded Contacts Array
}
关于ios - 将 CNContact 保存在 UserDefaults 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028160/