【问题标题】:Address book implementation not working通讯簿实施不起作用
【发布时间】:2023-03-07 16:33:01
【问题描述】:

我正在使用 XCode 4.2 开发一个添加联系人到通讯录的功能,这是我的代码

 ABAddressBookRef *iPhoneAddressBook = ABAddressBookCreate();
 ABRecordRef contact = ABPersonCreate();

 //add infos
 ABRecordSetValue(contact, kABPersonFirstNameProperty,(__bridge_retained CFStringRef)firstName, nil);
 ABRecordSetValue(contact, kABPersonLastNameProperty,(__bridge_retained CFStringRef)lastName, nil);
 ABRecordSetValue(contact, kABPersonOrganizationProperty, (__bridge_retained CFStringRef)organization, nil);
 ABRecordSetValue(contact, kABPersonJobTitleProperty, (__bridge_retained CFStringRef)title, nil);


 ABMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiRealPropertyType);


 ABMultiValueAddValueAndLabel(multiPhone, (__bridge_retained CFStringRef)workTel, kABPersonPhoneMainLabel, NULL);
 ABMultiValueAddValueAndLabel(multiPhone, (__bridge_retained CFStringRef)workFax, kABPersonPhoneWorkFAXLabel, NULL);

 ABRecordSetValue(contact, kABPersonPhoneProperty, multiPhone, nil);
 CFRelease(multiPhone);

 ABMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);

 ABMultiValueAddValueAndLabel(multiEmail, (__bridge_retained CFStringRef)email, kABWorkLabel, NULL);

 ABRecordSetValue(contact, kABPersonEmailProperty, multiEmail, nil);

 CFRelease(multiEmail);
// address

ABMultiValueRef multiAddress =ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDict = [[NSMutableDictionary alloc]init];
[addressDict setObject:address forKey:(NSString *) kABPersonAddressStreetKey];
[addressDict setObject:city forKey:(NSString *) kABPersonAddressCityKey];
[addressDict setObject:province forKey:(NSString *) kABPersonAddressStateKey];
[addressDict setObject:postalCode forKey:(NSString *) kABPersonAddressZIPKey];
[addressDict setObject:address forKey:(NSString *) kABPersonAddressCountryKey];

ABMultiValueAddValueAndLabel(multiAddress, (__bridge_retained CFStringRef)addressDict, kABWorkLabel, NULL);
ABRecordSetValue(contact, kABPersonAddressProperty, multiAddress, NULL);


CFRelease(multiAddress);

ABMultiValueRef multiURL =ABMultiValueCreateMutable(kABMultiRealPropertyType);
ABMultiValueAddValueAndLabel(multiURL, (__bridge_retained CFStringRef)link, kABPersonURLProperty, NULL);
CFRelease(multiURL);



 ABAddressBookAddRecord(iPhoneAddressBook, contact, nil);

 BOOL didAdd = ABAddressBookSave(iPhoneAddressBook, nil);

 CFRelease(contact);
 CFRelease(iPhoneAddressBook);

 //notifying the user that it was stored in his address book
 if (didAdd) {


 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Confirmation" 
 message:@"Contact Info successfully added to the Address Book" 
 delegate:self 
 cancelButtonTitle:@"OK" 
 otherButtonTitles:nil];
 [alert show];
 }

程序编译,但它停在这一行:

ABMultiValueAddValueAndLabel(multiPhone, (__bridge_retained CFStringRef)workTel, kABPersonPhoneMainLabel, NULL);

我收到此错误(绿色)

Thread 1

有什么线索吗?代码有什么问题?

【问题讨论】:

    标签: iphone objective-c ios addressbook


    【解决方案1】:

    这是发生错误的函数的定义:

    bool ABMultiValueAddValueAndLabel (
       ABMutableMultiValueRef multiValue,
       CFTypeRef value,
       CFStringRef label,
       ABMultiValueIdentifier *outIdentifier
    );
    

    看来你已经切换了第二个和第三个参数,对吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2011-06-10
      相关资源
      最近更新 更多