CNMutableContact+RAContact.m 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. //
  2. // CNMutableContact+RAContact.m
  3. // ContactDemo
  4. //
  5. // Created by Jack on 2018/12/25.
  6. // Copyright © 2018 USAI. All rights reserved.
  7. //
  8. #import "CNMutableContact+RAContact.h"
  9. @implementation CNMutableContact (RAContact)
  10. #pragma mark - Phone
  11. - (void)ra_addPhoneNumber:(NSString *)phoneNumber withLabel:(NSString *)label {
  12. if (phoneNumber) {
  13. if (!label) {
  14. label = CNLabelHome;
  15. }
  16. CNPhoneNumber *phone = [CNPhoneNumber phoneNumberWithStringValue:phoneNumber];
  17. CNLabeledValue *labeled_phone = [[CNLabeledValue alloc] initWithLabel:label value:phone];
  18. NSMutableArray<CNLabeledValue<CNPhoneNumber *> *> *phoneNumbers = [self.phoneNumbers mutableCopy];
  19. if (phoneNumbers == nil) {
  20. phoneNumbers = [NSMutableArray array];
  21. }
  22. [phoneNumbers addObject:labeled_phone];
  23. self.phoneNumbers = [phoneNumbers copy];
  24. }
  25. }
  26. - (void)ra_deletePhoneNumber:(CNLabeledValue<CNPhoneNumber *> *)phoneNumber {
  27. if (phoneNumber) {
  28. NSMutableArray<CNLabeledValue<CNPhoneNumber *> *> *phoneNumbers = [self.phoneNumbers mutableCopy];
  29. if (phoneNumbers && phoneNumbers.count > 0 && [phoneNumbers containsObject:phoneNumber]) {
  30. [phoneNumbers removeObject:phoneNumber];
  31. self.phoneNumbers = [phoneNumbers copy];
  32. }
  33. }
  34. }
  35. #pragma mark - Email
  36. - (void)ra_addEmail:(NSString *)email withLabel:(NSString *)label {
  37. if (email) {
  38. if (!label) {
  39. label = CNLabelHome;
  40. }
  41. CNLabeledValue<NSString *> *labeledEmail = [[CNLabeledValue alloc] initWithLabel:label value:email];
  42. NSMutableArray<CNLabeledValue<NSString *> *> *emails = [self.emailAddresses mutableCopy];
  43. if (emails == nil) {
  44. emails = [NSMutableArray array];
  45. }
  46. [emails addObject:labeledEmail];
  47. self.emailAddresses = [emails copy];
  48. }
  49. }
  50. - (void)ra_deleteEmail:(CNLabeledValue<NSString *> *)email {
  51. if (email) {
  52. NSMutableArray<CNLabeledValue<NSString *> *> *emails = [self.emailAddresses mutableCopy];
  53. if (emails && emails.count > 0 && [emails containsObject:email]) {
  54. [emails removeObject:email];
  55. self.emailAddresses = [emails copy];
  56. }
  57. }
  58. }
  59. #pragma mark - Postal Address
  60. - (void)ra_addPostalAdress:(CNPostalAddress *)postalAddress withLabel:(NSString *)label {
  61. if (postalAddress) {
  62. if (!label) {
  63. label = CNLabelHome;
  64. }
  65. CNLabeledValue<CNPostalAddress *> *labeledAddr = [[CNLabeledValue alloc] initWithLabel:label value:postalAddress];
  66. NSMutableArray<CNLabeledValue<CNPostalAddress *> *> *addresses = [self.postalAddresses mutableCopy];
  67. if (addresses == nil) {
  68. addresses = [NSMutableArray array];
  69. }
  70. [addresses addObject:labeledAddr];
  71. self.postalAddresses = [addresses copy];
  72. }
  73. }
  74. - (void)ra_deletePostalAddress:(CNLabeledValue<CNPostalAddress *> *)address {
  75. if (address) {
  76. NSMutableArray<CNLabeledValue<CNPostalAddress *> *> *addresses = [self.emailAddresses mutableCopy];
  77. if (addresses && addresses.count > 0 && [addresses containsObject:address]) {
  78. [addresses removeObject:address];
  79. self.postalAddresses = [addresses copy];
  80. }
  81. }
  82. }
  83. #pragma mark - Social Profile
  84. - (void)ra_addSocialProfile:(CNSocialProfile *)socialProfile withLabel:(NSString *)label {
  85. if (socialProfile) {
  86. if (!label) {
  87. label = CNLabelHome;
  88. }
  89. CNLabeledValue<CNSocialProfile *> *labeledSocialProfile = [[CNLabeledValue alloc] initWithLabel:label value:socialProfile];
  90. NSMutableArray<CNLabeledValue<CNSocialProfile *> *> *socialProfiles = [self.socialProfiles mutableCopy];
  91. if (socialProfiles == nil) {
  92. socialProfiles = [NSMutableArray array];
  93. }
  94. [socialProfiles addObject:labeledSocialProfile];
  95. self.socialProfiles = [socialProfiles copy];
  96. }
  97. }
  98. - (void)ra_deleteSocialProfiles:(CNLabeledValue<CNSocialProfile *> *)socialProfile {
  99. if (socialProfile) {
  100. NSMutableArray<CNLabeledValue<CNSocialProfile *> *> *socialProfiles = [self.socialProfiles mutableCopy];
  101. if (socialProfiles && socialProfiles.count > 0 && [socialProfiles containsObject:socialProfile]) {
  102. [socialProfiles removeObject:socialProfile];
  103. self.socialProfiles = [socialProfiles copy];
  104. }
  105. }
  106. }
  107. #pragma mark - URL
  108. - (void)ra_addURL:(NSString *)url withLabel:(NSString *)label {
  109. if (url) {
  110. if (!label) {
  111. label = CNLabelHome;
  112. }
  113. CNLabeledValue<NSString *> *labeledURL = [[CNLabeledValue alloc] initWithLabel:label value:url];
  114. NSMutableArray<CNLabeledValue<NSString *> *> *urlAddresses = [self.urlAddresses mutableCopy];
  115. if (urlAddresses == nil) {
  116. urlAddresses = [NSMutableArray array];
  117. }
  118. [urlAddresses addObject:labeledURL];
  119. self.urlAddresses = [urlAddresses copy];
  120. }
  121. }
  122. - (void)ra_deleteURL:(CNLabeledValue<NSString *> *)url {
  123. if (url) {
  124. NSMutableArray<CNLabeledValue<NSString *> *> *urlAddresses = [self.urlAddresses mutableCopy];
  125. if (urlAddresses && urlAddresses.count > 0 && [urlAddresses containsObject:url]) {
  126. [urlAddresses removeObject:url];
  127. self.urlAddresses = [urlAddresses copy];
  128. }
  129. }
  130. }
  131. @end