2013-07-31 2 views
2

ABRecordRef에 새로운 소셜 프로필을 추가하는 데 문제가 있습니다. 항상 ABAdressBookSave 에 충돌을 돌려 "[__NSCFString 수] : 인식 할 수없는 선택기 인스턴스로 전송"새 연락처를 저장하는 동안 나는이 같은 문제가 있었다ABPersonSocialProfile 충돌 앱

ABMultiValueRef social = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType); 
if(contact.socialTwitter != nil) 
    ABMultiValueAddValueAndLabel(social, (__bridge CFTypeRef)([NSDictionary dictionaryWithObjectsAndKeys: 
                   (NSString*)kABPersonSocialProfileServiceTwitter, kABPersonSocialProfileServiceKey, 
                   (__bridge CFStringRef)contact.socialTwitter, kABPersonSocialProfileUsernameKey, 
                   nil]), kABPersonSocialProfileServiceTwitter, NULL); 


ABRecordSetValue(record, kABPersonSocialProfileProperty, social, &error); 
CFRelease(social); 

답변

1

. 이 같은 모든 속성을 저장할 수없는 것 같습니다. 아래 코드는 저에게 효과적이었습니다.

ABRecordRef aRecord = ABPersonCreate(); 
      CFErrorRef anError = NULL; 

      // Username 
      ABRecordSetValue(aRecord, kABPersonFirstNameProperty, username, &anError); 

      // Phone Number. 
      ABMutableMultiValueRef multi = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
      ABMultiValueAddValueAndLabel(multi, (CFStringRef)usercontact, kABWorkLabel, NULL); 
      ABRecordSetValue(aRecord, kABPersonPhoneProperty, multi, &anError); 
      CFRelease(multi); 

      // Company 
      ABRecordSetValue(aRecord, kABPersonDepartmentProperty, usercompany, &anError); 

      // email 
      NSLog(useremail); 
      ABMutableMultiValueRef multiemail = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
      ABMultiValueAddValueAndLabel(multiemail, (CFStringRef)useremail, kABWorkLabel, NULL); 
      ABRecordSetValue(aRecord, kABPersonEmailProperty, multiemail, &anError); 
      CFRelease(multiemail); 

      // website 
      NSLog(userwebsite); 
      ABMutableMultiValueRef multiweb = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
      ABMultiValueAddValueAndLabel(multiweb, (CFStringRef)userwebsite, kABWorkLabel, NULL); 
      ABRecordSetValue(aRecord, kABPersonURLProperty, multiweb, &anError); 
      CFRelease(multiemail); 

      // Function 
      ABRecordSetValue(aRecord, kABPersonJobTitleProperty, userrole, &anError); 

      if (anError != NULL) 
       NSLog(@\"error while creating..\"); 

      CFStringRef personname, personcompind, personemail, personfunction, personwebsite, personcontact; 

      personname = ABRecordCopyValue(aRecord, kABPersonFirstNameProperty); 
      personcompind = ABRecordCopyValue(aRecord, kABPersonDepartmentProperty); 
      personfunction = ABRecordCopyValue(aRecord, kABPersonJobTitleProperty); 
      personemail = ABRecordCopyValue(aRecord, kABPersonEmailProperty); 
      personwebsite = ABRecordCopyValue(aRecord, kABPersonURLProperty); 
      personcontact = ABRecordCopyValue(aRecord, kABPersonPhoneProperty); 

      ABAddressBookRef addressBook; 
      CFErrorRef error = NULL; 
      addressBook = ABAddressBookCreate(); 

      BOOL isAdded = ABAddressBookAddRecord (addressBook, aRecord, &error); 

      if(isAdded){ 

       NSLog(@\"added..\"); 
      } 
      if (error != NULL) { 
       NSLog(@\"ABAddressBookAddRecord %@\", error); 
      } 
      error = NULL; 

      BOOL isSaved = ABAddressBookSave (addressBook, &error); 

      if(isSaved) { 

       NSLog(@\"saved..\"); 
       UIAlertView *alertOnChoose = [[UIAlertView alloc] initWithTitle:@\"Phone added successfully to your addressbook\" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@\"Ok\", nil]; 
       [alertOnChoose show]; 
       [alertOnChoose release]; 
      } 

      if (error != NULL) { 

       NSLog(@\"ABAddressBookSave %@\", error); 
       UIAlertView *alertOnChoose = [[UIAlertView alloc] initWithTitle:@\"Unable to save this time\" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@\"Ok\", nil]; 
       [alertOnChoose show]; 
       [alertOnChoose release]; 
      } 

      CFRelease(aRecord); 
      CFRelease(personname); 
      CFRelease(personcompind); 
      CFRelease(personcontact); 
      CFRelease(personemail); 
      CFRelease(personfunction); 
      CFRelease(personwebsite); 
      CFRelease(addressBook);