我正在尝试修改我的IOS应用程序中的联系人,但出现类型错误
“[CNContact]类型的值没有成员“familyName”
let updateContact = try contactStore.unifiedContacts(matching: predicate,keysToFetch: toFetch as [CNKeyDescriptor])
updateContact.familyName.append(CNLabeledValue(label: CNLabelWork, value: contact["2"]!))
很明显,我的updateContact类型不正确,但无法确定哪里出错了
最佳答案
要为调用CNContacts
返回的unifiedContacts
对象获取的属性在toFetch
数组中指定。是否将familyName值指定为toFetch
数组的一部分?
如果不确定,请提供用于设置toFetch
数组的代码。
更新:
对unifiedContacts
的调用返回一个CNContact
对象数组。这就是为什么你会犯错误。必须从数组中取出一个CNContact
实例,然后对其进行修改。像这样的:
if let updateContact = try contactStore.unifiedContacts(matching: predicate,keysToFetch: toFetch as [CNKeyDescriptor]).first {
let name = updateContact.familyName + contact["2"]!
updateContact.setValue(name, forKey:CNContactFamilyNameKey)
}