在向IOS联系人添加数据时,我遇到了类型问题。下面的代码给出了一个错误

在向IOS联系人添加数据时,我遇到了类型问题。下面的代码给出了一个错误,ios,swift,cncontact,Ios,Swift,Cncontact,我正在尝试修改IOS应用程序中的联系人,但收到类型错误 “[CNContact]”类型的值没有成员“familyName” let updateContact = try contactStore.unifiedContacts(matching: predicate,keysToFetch: toFetch as [CNKeyDescriptor]) updateContact.familyName.append(CNLabeledValue(label: CN

我正在尝试修改IOS应用程序中的联系人,但收到类型错误 “[CNContact]”类型的值没有成员“familyName”

    let updateContact = try contactStore.unifiedContacts(matching: predicate,keysToFetch: toFetch as [CNKeyDescriptor])
            updateContact.familyName.append(CNLabeledValue(label: CNLabelWork, value: contact["2"]!))

显然,我的updateContact类型错误,但无法确定哪里出了问题。调用
unifiedContacts
返回的
CNContacts
对象的属性在
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)
}

调用
unifiedContacts
返回的
CNContacts
对象要获取的属性在
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)
}

let predicate=CNContact.predicateForContacts(matchingName:delCont)let toFetch=[CNContactGivenNameKey]+[CNContactFamilyNameKey]@Jeremy如果你能提供完整的项目,我可以调试它,更容易看到发生了什么:)好,我第一次错过了这个-调用
unifiedContacts
返回一个
CNContact
对象数组。这就是你出错的原因。您必须从数组中获取一个
CNContact
实例,然后对其进行修改。+1答案在更新中:
unifiedContacts
返回一个联系人数组(当您考虑它时确实很明显),如果我提供的代码适合您,请将其标记为“正确”好吗?让predicate=CNContact.predicateForContacts(matchingName:delCont)让toFetch=[CNContactGivenNameKey]+[CNContactFamilyNameKey]@Jeremy如果你能提供完整的项目,我可以更容易地调试它,看看发生了什么:)好的,我第一次错过了这个-调用
unifiedContacts
返回一个
CNContact
对象数组。这就是你出错的原因。您必须从数组中获取一个
CNContact
实例,然后对其进行修改。+1更新中给出了答案:
unifiedContacts
返回一个联系人数组(当您想到它时确实很明显),请将其标记为“正确”好吗如果我提供的代码对您有效?可能是您当前的联系人没有姓氏可能是您当前的联系人没有姓氏