簡體   English   中英

從iPhone檢索聯系人

[英]Retrieve contacts from iphone

我需要在UITableView中顯示用戶電話中所有可用的聯系人列表。我可以成功檢索contactName,PhoneNumber。但是當我將數據添加到NSMutableArray時,它添加了一些不尋常的字符。無法理解問題是

-(void)viewDidLoad
{
  Names=[[NSMutableArray alloc]init];
    ABAddressBookRef allPeople = ABAddressBookCreate();
    CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeople(allPeople);
    CFIndex numberOfContacts  = ABAddressBookGetPersonCount(allPeople);

    NSLog(@"numberOfContacts---%ld",numberOfContacts);


    for(int i = 0; i < numberOfContacts; i++){
        NSString* name = @"";
        NSString* phone = @"";
        NSString* email = @"";

        ABRecordRef aPerson = CFArrayGetValueAtIndex(allContacts, i);
        ABMultiValueRef fnameProperty = ABRecordCopyValue(aPerson, kABPersonFirstNameProperty);
        ABMultiValueRef lnameProperty = ABRecordCopyValue(aPerson, kABPersonLastNameProperty);

        ABMultiValueRef phoneProperty = ABRecordCopyValue(aPerson, kABPersonPhoneProperty);\
        ABMultiValueRef emailProperty = ABRecordCopyValue(aPerson, kABPersonEmailProperty);

        NSArray *emailArray = (__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(emailProperty);
        NSArray *phoneArray = (__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(phoneProperty);


        if (fnameProperty != nil) {
            name = [NSString stringWithFormat:@"%@", fnameProperty];
        }
        if (lnameProperty != nil) {
            name = [name stringByAppendingString:[NSString stringWithFormat:@" %@", lnameProperty]];
        }

        if ([phoneArray count] > 0) {
            if ([phoneArray count] > 1) {
                for (int i = 0; i < [phoneArray count]; i++) {
                    phone = [phone stringByAppendingString:[NSString stringWithFormat:@"%@\n", [phoneArray objectAtIndex:i]]];
                }
            }else {
                phone = [NSString stringWithFormat:@"%@", [phoneArray objectAtIndex:0]];
            }
        }

        if ([emailArray count] > 0) {
            if ([emailArray count] > 1) {
                for (int i = 0; i < [emailArray count]; i++) {
                    email = [email stringByAppendingString:[NSString stringWithFormat:@"%@\n", [emailArray objectAtIndex:i]]];
                }
            }else {
                email = [NSString stringWithFormat:@"%@", [emailArray objectAtIndex:0]];
            }
        }

        NSLog(@"NAME : %@",name);
        NSLog(@"PHONE: %@",phone);
        NSLog(@"EMAIL: %@",email);
        NSLog(@"\n");

        NSMutableDictionary *d=[[NSMutableDictionary alloc]init];
        [d setObject:name forKey:@"Name"];
        [d setObject:phone forKey:@"Phone"];
        [d setObject:email forKey:@"Email"];


        [Names addObject:d];



    }
    NSLog(@"%@",Names);

這是名稱的NSLog:

{
    Email = "";
    Name = Hk;
    Phone = "(975)\U00a0050-1890";    //Actual Number (975)050-1890
},
    {
    Email = "";
    Name = Nik;
    Phone = "1\U00a0(234)\U00a0567-890";  //Actual Number :(932)324-1343
}

為什么在電話號碼中添加r個不尋常的字符...任何幫助將不勝感激。

這是一個“不間斷空間”(請參閱http://unicode-table.com/zh/00A0/ )。

似乎這些符號可以通過某些外部同步出現在您的地址簿中。 但是我在視覺上沒有區別。

如果在iPhone通訊錄中輸入數字,它將自動格式化,括號和數字之間的空格不可移動。 您的情況並非如此。 視覺上根本沒有空間。 因此,在代碼中您具有不間斷空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM