【问题标题】:Retrive contact list from iPhone and display in presonal app从 iPhone 检索联系人列表并显示在个人应用程序中
【发布时间】:2011-07-23 05:04:36
【问题描述】:

谁能告诉我如何从 iPhone 联系人列表中检索名字和姓氏并在个人应用程序中显示它们?在 iPhone 联系人列表中,有些人有 100 个联系人,我想从这 100 个联系人中检索名字和姓氏,并将它们显示在我的应用中。

有人知道如何从联系人列表中检索并显示在我的应用程序中吗?

【问题讨论】:

    标签: ios4


    【解决方案1】:

    您可以使用此方法在自己的应用程序中同步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);
    }
    

    【讨论】:

      【解决方案2】:

      查看 iOS 文档中的示例应用程序 QuickContacts:

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

      它旨在介绍如何使用通讯簿框架,您可以找到 here 的完整文档。该框架提供了许多用于处理联系人的有用功能。

      【讨论】:

        猜你喜欢
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        相关资源
        最近更新 更多