Получить список контактов с iPhone и отобразить в приложении presonal - PullRequest
1 голос
/ 23 июля 2011

Может кто-нибудь дать мне представление о том, как извлечь имена и фамилии из списка контактов iPhone и показать их в личном приложении? В списке контактов iPhone у некоторых людей есть 100 контактов, и я хочу получить имя и фамилию из этих 100 контактов и отобразить их в моем приложении.

Кто-нибудь знает, как извлечь из списка контактов и отобразить в моем приложении?

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

Вы можете использовать этот метод для синхронизации контактной информации устройства 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);
}
1 голос
/ 23 июля 2011

Взгляните на этот пример приложения QuickContacts в документации iOS:

http://developer.apple.com/library/ios/#samplecode/QuickContacts/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009475-Intro-DontLinkElementID_2

Он предназначен для ознакомления с работой с Address Book Framework, полную документацию по которой вы можете найти здесь . Эта структура предоставляет ряд полезных функций для работы с контактами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...