0

で電話のプロパティを取得するABAddressBookには、ループを使用します。

編集:私が試したコード:

    ABMultiValueRef phones = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);

                        for (NSUInteger j = 0; j < ABMultiValueGetCount(phones); j++) {

            NSMutableString *phone = [CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) mutableCopy];
if ([phone hasPrefix:@"06"] || [phone hasPrefix:@"07"]){
    person.number = phone;
    }

しかし、これが最良の選択肢だとは思いません..?

たぶん次のようなもの:

if (ABMultiValueRef hasprefix...06 ||  07){
person.number = phones
}

連絡先に電話番号の値が複数ある場合は、 でカウントできますABMultiValueGetCount(phones)

さて、例を見てみましょう:

連絡先 « Peter » には、ABAddressBook(電話番号NSLog) に 5 つの電話番号があります:

02 35 00 00 00

07 00 00 00 00

+1(919)949-8234

06 00 00 00 00

9009498923

これらの数字を並べ替えて、1 つだけを に保存したいと思いますNSString

番号が 07 で始まる場合 —> TAKE IT. (に割り当てるNSString)

番号が 06 で始まる場合 —> それを取ります。(に割り当てるNSString)

他の番号の場合 —> 割り当てません。

それらが 2 つの電話番号である場合: 1 つは 06 で、もう 1 つは 07 で、最後に登録されABAddressBookた番号を取得します (または、これが不可能または複雑すぎる場合は、07 で始まる番号を取得します)。

の連絡先ごとにこのループを作成したいと思いますABAddressBook。すべての連絡先には 1 つの番号しかありません (番号が 06 または 07 で始まらない場合は 0)。

私の例では:

ピーターはこの番号を持っています: 07 00 00 00 00

4

1 に答える 1

1

私が見つけたベストアンサー:

ABMultiValueRef phones = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);
                            for (NSUInteger j = 0; j < ABMultiValueGetCount(phones); j++) 
{   
if ([CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"07"] 
|| [CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"06"] 
||[CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"+33"])
        {

}
}
于 2015-09-25T01:01:41.237 に答える