我正在尝试修改我的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)
}

08-18 20:15