Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 按电话联系人顺序在UITable视图中显示联系人_Iphone - Fatal编程技术网

Iphone 按电话联系人顺序在UITable视图中显示联系人

Iphone 按电话联系人顺序在UITable视图中显示联系人,iphone,Iphone,我可以从通讯录中导入联系人并将其显示在表视图中。但我要做的是以与通讯录顺序相同的顺序显示联系人 有人能帮我怎么做吗?我的代码如下 self.navigationController.navigationBar.tintColor = [UIColor grayColor]; self.title = @"iPhone Contacts"; [super viewDidLoad]; wantedname= [[NSMutableArray alloc] init];

我可以从通讯录中导入联系人并将其显示在表视图中。但我要做的是以与通讯录顺序相同的顺序显示联系人

有人能帮我怎么做吗?我的代码如下

self.navigationController.navigationBar.tintColor = [UIColor grayColor];
    self.title = @"iPhone Contacts";
    [super viewDidLoad];
    wantedname= [[NSMutableArray alloc] init];
    wantednumber= [[NSMutableArray alloc] init];
    ABAddressBookRef addressBook = ABAddressBookCreate();
    NSArray *thePeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);

    NSString *name;
    for (id person in thePeople)
    {
        name = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
        NSLog(@"!!!!!! name ---> %@",name);
        ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
        int count1=ABMultiValueGetCount(multi);
        NSLog(@"%d",count1);
        if ([name length]>0 && count1!=0) 
        {
                    NSString *beforenumber = (NSString *)ABMultiValueCopyValueAtIndex(multi, 0);
            NSLog(@" contacts:%@",beforenumber );
            NSString* removed1=[beforenumber stringByReplacingOccurrencesOfString:@"-"withString:@""];
            NSString* removed2=[removed1 stringByReplacingOccurrencesOfString:@")"withString:@""];
            NSString* removed3=[removed2 stringByReplacingOccurrencesOfString:@" "withString:@""];
            NSString* removed4=[removed3 stringByReplacingOccurrencesOfString:@"("withString:@""];
            NSString* removed5=[removed4 stringByReplacingOccurrencesOfString:@"+"withString:@""];
            [wantedname addObject:name];
            [wantednumber addObject:removed5];
           // CFRelease(beforenumber);
            [beforenumber release];
            //CFRelease(name);

        }
        //CFRelease(name);
        [name release];
        CFRelease(multi);
    }

    CFRelease(addressBook);
    CFRelease(thePeople);

    contactstable.delegate = self;
    contactstable.dataSource = self;
而不是:

NSArray *thePeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
您可以尝试:

ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
NSArray *thePeople = (NSArray*)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName);

我就是这样做的。希望有帮助。:)

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef allPeopleMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(allPeople), allPeople);
CFArraySortValues(allPeopleMutable, CFRangeMake(0, CFArrayGetCount(allPeopleMutable)), (CFComparatorFunction)ABPersonComparePeopleByName, kABPersonSortByFirstName);