class User { let phoneNumber: String}
如何从用户联系簿获取相应的联系人?
我尝试了以下但似乎这只适用于联系人名称,因为我总是得到零:
let predicate = CNContact.predicateForContactsMatchingname(userInstance.phoneNumber)let keysToFetch = [CNContactFormatter.descriptorForrequiredKeysForStyle(.Fullname),CNContactPhoneNumbersKey]// Is already permittedtry! CNContactStore().unifIEdContactsMatchingPredicate(predicate,keysToFetch: keysToFetch).first // This returns nil
我在文档中搜索过但我找不到合适的解决方案.
解决方法let contactStroe = CNContactStore() let keysToFetch = [ CNContactFormatter.descriptorForrequiredKeysForStyle(.Fullname),CNContactEmailAddressesKey,CNContactPhoneNumbersKey,CNContactimageDataAvailableKey,CNContactthumbnailImageDataKey]contactStroe.requestAccessForEntityType(.Contacts,completionHandler: { (granted,error) -> VoID inif granted { let predicate = CNContact.predicateForContactsInContainerWithIDentifIEr(contactStroe.defaultContainerIDentifIEr()) var contacts: [CNContact]! = [] do { contacts = try contactStroe.unifIEdContactsMatchingPredicate(predicate,keysToFetch: keysToFetch)// [CNContact] }catch { }for contact in contacts { var phonestr = "" var nameStr = "" var number: CNPhoneNumber! if contact.phoneNumbers.count > 0 { number = contact.phoneNumbers[0].value as! CNPhoneNumber phonestr = number.stringValue.stringByReplacingOccurrencesOfString("-",withString: "") } nameStr = contact.familyname + contact.givenname if !nameStr.isEmpty && !phonestr.isEmpty { let frIEnd = YFrIEndsModel() frIEnd.name = nameStr frIEnd.phone = phonestr self.frIEndArr.append(frIEnd) } } })
这是我的方式,你可以进行测试
总结以上是内存溢出为你收集整理的iOS Contacts Framework:如何通过电话号码获取联系人全部内容,希望文章能够帮你解决iOS Contacts Framework:如何通过电话号码获取联系人所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)