gpt4 book ai didi

ios - 我正在检索联系人的多个地址,但只需要家庭住址

转载 作者:行者123 更新时间:2023-11-29 13:11:21 25 4
gpt4 key购买 nike

有谁知道如何从 iOS 中的多地址检索家庭地址?我已获得用户和其他一切的许可,但问题是,我只想要家庭地址。

ABAddressBookRef addressBook = ABAddressBookCreate();
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}
else { // we're on iOS 5 or older

accessGranted = YES;
}

if (accessGranted) {

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);

CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

NSMutableArray *array = [[NSMutableArray alloc] init];

for( int i = 0 ; i < nPeople ; i++ )

{
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i );

// First Name
NSString *fName = (__bridge NSString*)ABRecordCopyValue(ref, kABPersonFirstNameProperty);

// Last Name
NSString *lName = (__bridge NSString*)ABRecordCopyValue(ref, kABPersonLastNameProperty);

// Phone
ABMultiValueRef phoneMultiValue = ABRecordCopyValue(ref, kABPersonPhoneProperty);
CFArrayRef allPhones = ABMultiValueCopyArrayOfAllValues(phoneMultiValue);
NSMutableArray *phoneData = [NSMutableArray arrayWithArray:(__bridge NSArray*) allPhones];

// Email
ABMultiValueRef emailMultiValue = ABRecordCopyValue(ref, kABPersonEmailProperty);
CFArrayRef allEmails = ABMultiValueCopyArrayOfAllValues(emailMultiValue);
NSMutableArray *emailData = [NSMutableArray arrayWithArray:(__bridge NSArray*) allEmails];

// Address
ABMultiValueRef addressMultiValue = ABRecordCopyValue(ref, kABPersonAddressProperty);

CFArrayRef allAddresses = ABMultiValueCopyArrayOfAllValues(addressMultiValue);

NSMutableArray* addressData = [NSMutableArray arrayWithArray:(__bridge NSArray*) allAddresses];

for ( int j = 0 ; j < [addressData count]; j++) {
if ([[addressData objectAtIndex:j] count] > 0) {

if ([fName length] > 0 || [lName length] > 0) {


if ([fName length] > 0) {
[dic setObject:fName forKey:@"FirstName"];
}

if ([lName length] > 0) {
[dic setObject:lName forKey:@"LastName"];
}

if ([phoneData count] > 0) {
[dic setObject:phoneData forKey:@"MultiplePhoneNumbers"];
}

if ([emailData count] > 0) {
[dic setObject:emailData forKey:@"MultipleEmails"];
}


[dic setObject:addressData forKey:@"MultipleAddresses"];



}
}
}

NSUInteger keyCount = [[dic allKeys] count];
if (keyCount > 0) {

ABRecordID recId = ABRecordGetRecordID(ref);


[dic setObject:[NSString stringWithFormat:@"%d",recId] forKey:@"ABRecordRef"];
[dic setObject:[NSString stringWithFormat:@"%d",i] forKey:@"ab_id"];
[dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"is_coordinate_fetch"];
[array addObject:dic];
}

如果有人能花时间帮我解决这个问题,我将不胜感激。

最佳答案

您需要遍历 kABPersonAddressProperty 多值属性并提取与 kABHomeLabel 标识符匹配的属性。以下是您在 iOS 7 中的操作方法(假设引用了地址簿):

NSArray *people = CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(localAddressBook));

// Iterate through each person in the Address Book
for (NSUInteger i = 0; i < people.count; i++)
{
ABRecordRef person = CFArrayGetValueAtIndex((__bridge CFArrayRef)people, i);

// Access the person's addresses (a ABMultiValueRef)
ABMultiValueRef addressesProperty = CFAutorelease(ABRecordCopyValue(person, kABPersonAddressProperty));

if (addressesProperty)
{
// Iterate through the address multivalue
for (CFIndex index = 0; index < ABMultiValueGetCount(addressesProperty); index++)
{
// Get the address label
NSString *addressLabel = (NSString *)CFBridgingRelease(ABMultiValueCopyLabelAtIndex(addressesProperty, index));

// Check for home address label
if ([addressLabel isEqualToString:(NSString *)kABHomeLabel])
{
// Your code here
NSLog(@"%@", addressLabel);
}
}
}
}

关于ios - 我正在检索联系人的多个地址,但只需要家庭住址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com