CNContact+RAContact.m 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. //
  2. // CNContact+RAContact.m
  3. // ContactDemo
  4. //
  5. // Created by Jack on 2018/12/25.
  6. // Copyright © 2018 USAI. All rights reserved.
  7. //
  8. #import "CNContact+RAContact.h"
  9. @implementation CNContact (RAContact)
  10. - (BOOL)ra_containsKeyWord:(NSString *)keyword {
  11. if (keyword && keyword.length > 0) {
  12. // givenName middleName familyName
  13. NSString *givenName = self.givenName;
  14. NSString *middleName = self.middleName;
  15. NSString *familyName = self.familyName;
  16. if ([givenName containsString:keyword] || [middleName containsString:keyword] || [familyName containsString:keyword]) {
  17. return YES;
  18. }
  19. // organizationName departmentName jobTitle
  20. NSString *organizationName = self.organizationName;
  21. NSString *departmentName = self.departmentName;
  22. NSString *jobTitle = self.jobTitle;
  23. if ([organizationName containsString:keyword] || [departmentName containsString:keyword] || [jobTitle containsString:keyword]) {
  24. return YES;
  25. }
  26. // phoneNumbers
  27. NSArray<CNLabeledValue<CNPhoneNumber*>*> *phoneNumbers = self.phoneNumbers;
  28. for (CNLabeledValue<CNPhoneNumber*> *labeledValue in phoneNumbers) {
  29. CNPhoneNumber *phoneNumber = labeledValue.value;
  30. // NSString *label = [CNLabeledValue localizedStringForLabel:labeledValue.label];
  31. if ([phoneNumber.stringValue containsString:keyword]) {
  32. return YES;
  33. }
  34. }
  35. // emailAddresses
  36. NSArray<CNLabeledValue<NSString*>*> *emailAddresses = self.emailAddresses;
  37. for (CNLabeledValue<NSString*> *labeledValue in emailAddresses) {
  38. NSString *email = labeledValue.value;
  39. // NSString *label = [CNLabeledValue localizedStringForLabel:labeledValue.label];
  40. if ([email containsString:keyword]) {
  41. return YES;
  42. }
  43. }
  44. // postalAddresses
  45. NSArray<CNLabeledValue<CNPostalAddress*>*> *postalAddresses = self.postalAddresses;
  46. for (CNLabeledValue<CNPostalAddress*> *labeledValue in postalAddresses) {
  47. // NSString *label = [CNLabeledValue localizedStringForLabel:labeledValue.label];
  48. CNPostalAddress *postalAddress = labeledValue.value;
  49. NSString *postalCode = postalAddress.postalCode;
  50. NSString *country = postalAddress.country;
  51. NSString *state = postalAddress.state;
  52. NSString *city = postalAddress.city;
  53. NSString *street = postalAddress.street;
  54. if ([postalCode containsString:keyword] || [country containsString:keyword] || [state containsString:keyword] || [city containsString:keyword] || [street containsString:keyword]) {
  55. return YES;
  56. }
  57. }
  58. // urlAddresses
  59. NSArray<CNLabeledValue<NSString*>*> *urlAddresses = self.urlAddresses;
  60. for (CNLabeledValue<NSString*> *labeledValue in urlAddresses) {
  61. NSString *url = labeledValue.value;
  62. // NSString *label = [CNLabeledValue localizedStringForLabel:labeledValue.label];
  63. if ([url containsString:keyword]) {
  64. return YES;
  65. }
  66. }
  67. // note
  68. if ([self.note containsString: keyword]) {
  69. return YES;
  70. }
  71. }
  72. return NO;
  73. }
  74. @end