Вы можете использовать этот метод для синхронизации контактной информации устройства iPhone в своем приложении и отображать ее в своем собственном списке.
Здесь вы можете использовать один массив - "contactArray" для хранения контактной информации.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
contactArray = [[NSMutableArray alloc] init];
[self SyncContactData];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
Это метод синхронизации контактной информации от устройства к приложению.
- (void) SyncContactData
{
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
for( int i = 0 ; i < nPeople ; i++ )
{
dicContact = [[NSMutableDictionary alloc] init];
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i );
if(ABRecordCopyValue(ref, kABPersonFirstNameProperty) != nil || [[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonFirstNameProperty)] length] == 0)
[dicContact setValue:[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonFirstNameProperty)] forKey:@"firstname"];
else
[dicContact setValue:@"" forKey:@"firstname"];
if(ABRecordCopyValue(ref, kABPersonLastNameProperty) != nil || [[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonLastNameProperty)] length] == 0)
[dicContact setValue:[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonLastNameProperty)] forKey:@"lastname"];
else
[dicContact setValue:@"" forKey:@"lastname"];
if(ABRecordCopyValue(ref, kABPersonOrganizationProperty) != nil || [[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonOrganizationProperty)] length] == 0)
[dicContact setValue:[NSString stringWithFormat:@"%@",ABRecordCopyValue(ref, kABPersonOrganizationProperty)] forKey:@"name"];
else
[dicContact setValue:[NSString stringWithFormat:@"%@ %@",[dicContact valueForKey:@"firstname"],[dicContact valueForKey:@"lastname"]] forKey:@"name"];
NSData *data1 = [(NSData *) ABPersonCopyImageData(ref) autorelease];
if(data1 == nil)
[dicContact setObject:@"" forKey:@"image"];
else
[dicContact setObject:data1 forKey:@"image"];
multival = ABRecordCopyValue(ref, kABPersonAddressProperty);
NSArray *arrayAddress = (NSArray *)ABMultiValueCopyArrayOfAllValues(multival);
if([arrayAddress count] > 0)
{
if([[arrayAddress objectAtIndex:0] valueForKey:@"City"] != nil)
[dicContact setValue:[[arrayAddress objectAtIndex:0] valueForKey:@"City"] forKey:@"city"];
else
[dicContact setValue:@"" forKey:@"city"];
if([[arrayAddress objectAtIndex:0] valueForKey:@"State"] != nil)
[dicContact setValue:[[arrayAddress objectAtIndex:0] valueForKey:@"State"] forKey:@"state"];
else
[dicContact setValue:@"" forKey:@"state"];
if([[arrayAddress objectAtIndex:0] valueForKey:@"Street"] != nil)
[dicContact setValue:[[arrayAddress objectAtIndex:0] valueForKey:@"Street"] forKey:@"address1"];
else
[dicContact setValue:@"" forKey:@"address1"];
if([[arrayAddress objectAtIndex:0] valueForKey:@"ZIP"] != nil)
[dicContact setValue:[[arrayAddress objectAtIndex:0] valueForKey:@"ZIP"] forKey:@"postcode"];
else
[dicContact setValue:@"" forKey:@"postcode"];
}
else
{
[dicContact setValue:@"" forKey:@"city"];
[dicContact setValue:@"" forKey:@"address1"];
[dicContact setValue:@"" forKey:@"state"];
[dicContact setValue:@"" forKey:@"postcode"];
}
multival = ABRecordCopyValue(ref, kABPersonPhoneProperty);
NSArray *arrayPhone = (NSArray *)ABMultiValueCopyArrayOfAllValues(multival);
if([arrayPhone count] > 0)
[dicContact setValue:[arrayPhone objectAtIndex:0] forKey:@"telephone"];
else
[dicContact setValue:@"" forKey:@"telephone"];
multival = ABRecordCopyValue(ref, kABPersonEmailProperty);
NSArray *arrayEmail = (NSArray *)ABMultiValueCopyArrayOfAllValues(multival);
if([arrayEmail count])
[dicContact setValue:[arrayEmail objectAtIndex:0] forKey:@"email"];
else
[dicContact setValue:@"" forKey:@"email"];
multival = ABRecordCopyValue(ref, kABPersonURLProperty);
NSArray *arrayURL = (NSArray *)ABMultiValueCopyArrayOfAllValues(multival);
if([arrayURL count])
[dicContact setValue:[arrayURL objectAtIndex:0] forKey:@"website"];
else
[dicContact setValue:@"" forKey:@"website"];
[dicContact setValue:@"" forKey:@"address2"];
[dicContact setValue:@"" forKey:@"mobile"];
[dicContact setValue:@"" forKey:@"fax"];
[dicContact setValue:@"1.000000,1.000000,0.000000,0.000000" forKey:@"color"];
[contactArray addObject:dicContact];
[dicContact release];
}
CFRelease(addressBook);
CFRelease(allPeople);
}