在向IOS联系人添加数据时,我遇到了类型问题。下面的代码给出了一个错误
我正在尝试修改IOS应用程序中的联系人,但收到类型错误 “[CNContact]”类型的值没有成员“familyName”在向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
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
返回一个联系人数组(当您想到它时确实很明显),请将其标记为“正确”好吗如果我提供的代码对您有效?可能是您当前的联系人没有姓氏可能是您当前的联系人没有姓氏