我正在開發一個使用bonjour連接到另一個iphone的應用程序。其特點之一是當我連接到其他設備時,它會自動檢查我是否有其他人的電話號碼。所以我的問題是如何檢查我的地址簿中的其他設備提供的電話號碼?如何在iPhone地址簿中搜索特定的電話號碼?
10
A
回答
18
下面是從我的一個地址簿方法中提取的示例。我沒有通過電話號碼搜索,但這給了你一個想法如何繼續與你需要的東西:
- (void) scanAddressBookSample
{
NSUInteger i;
NSUInteger k;
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *people = (NSArray *) ABAddressBookCopyArrayOfAllPeople(addressBook);
if (people==nil)
{
NSLog(@"NO ADDRESS BOOK ENTRIES TO SCAN");
CFRelease(addressBook);
return;
}
for (i=0; i<[people count]; i++)
{
ABRecordRef person = (ABRecordRef)[people objectAtIndex:i];
//
// Phone Numbers
//
ABMutableMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex phoneNumberCount = ABMultiValueGetCount(phoneNumbers);
for (k=0; k<phoneNumberCount; k++)
{
CFStringRef phoneNumberLabel = ABMultiValueCopyLabelAtIndex(phoneNumbers, k);
CFStringRef phoneNumberValue = ABMultiValueCopyValueAtIndex(phoneNumbers, k);
CFStringRef phoneNumberLocalizedLabel = ABAddressBookCopyLocalizedLabel(phoneNumberLabel); // converts "_$!<Work>!$_" to "work" and "_$!<Mobile>!$_" to "mobile"
// Find the ones you want here
//
NSLog(@"-----PHONE ENTRY -> %@ : %@", phoneNumberLocalizedLabel, phoneNumberValue);
CFRelease(phoneNumberLocalizedLabel);
CFRelease(phoneNumberLabel);
CFRelease(phoneNumberValue);
}
}
[people release];
CFRelease(addressBook);
}
-1
使用此。這是我的代碼。
NSLog(@"=====Make People Array with Numbers. Start.");
peopleWithNumber = [[NSMutableDictionary alloc] init];
for (int i=0; i < [people count]; i++) {
NSInteger phoneCount = [self phoneCountAtIndex:i];
if (phoneCount != 0) {
NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];
for (int j=0 ; j < phoneCount ; j++) {
[phoneNumbers addObject:[self phoneNumberAtIndex:i phoneIndex:j]];
}
[peopleWithNumber addEntriesFromDictionary:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSArray arrayWithArray:phoneNumbers], [self fullNameAtIndex:i], nil]];
}
}
NSLog(@"=====Make People Array with Numbers. End.\n");
搜索方法。它會比使用數組快
「NSArray * people =(NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);」
- (NSArray *)searchNamesByNumber:(NSString *)number {
NSString *predicateString = [NSString stringWithFormat:@"%@[SELF] contains '%@'",@"%@",number];
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:predicateString,peopleWithNumber,number];
NSArray *names = [[peopleWithNumber allKeys] filteredArrayUsingPredicate:searchPredicate];
return names;
}
5
-(void)createQuickAccessContacts{
NSMutableDictionary contactDictionary= [[NSMutableDictionary alloc]init];
CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex n = ABAddressBookGetPersonCount(addressBook);
NSDate *date=[NSDate date];
for(int i = 0 ; i < n ; i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
ABMultiValueRef phones = (ABMultiValueRef)ABRecordCopyValue(ref, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
[contactDictionary setObject:(__bridge id)(ref) forKey:phoneNumber];
}
}
NSLog(@" Time taken %f for %i contacts",[[NSDate date] timeIntervalSinceDate:date],[contactDictionary count]);
}
這需要像0.5秒,2.5K接觸,以填補 那麼你可以使用數
ABRecordRef ref= [contactDictionary objectForKey:@"89xxxxxxx"];
其超快需要像0.000x秒
相關問題
- 1. iPhone地址簿電話號碼
- 2. 如何使用電話號碼搜索地址簿?
- 3. iPhone地址簿搜索使用號碼
- 4. iPhone地址簿搜索
- 5. 從地址簿中獲取iPhone電話號碼標籤
- 6. 我如何使用電話號碼/電話號碼簿搜索引擎優化
- 7. iPhone sdk:如何獲取地址簿中所有電話號碼的計數?
- 8. 從地址簿中確定匹配的電話號碼
- 9. 如何從地址簿中獲得人員電話號碼?
- 10. iPhone地址簿:如何獲取電話號碼的聯繫人列表?
- 11. 確定本地地址簿中的電話號碼國家代碼
- 12. iPhone - 地址簿搜索崩潰
- 13. 從地址簿中取出電話號碼
- 14. 從地址簿中獲取電話號碼
- 15. 從地址簿中獲取所有電話號碼
- 16. 在電話號碼中搜索
- 17. 如何從iPhone的地址簿中檢索地址。
- 18. 從iPhone地址簿返回所選電話地址
- 19. 如何選擇iPhone中地址簿中的特定字段
- 20. 地址簿+ UITableView索引iPhone
- 21. 地址簿獲取電話號碼問題
- 22. Xcode地址簿顯示全名而不是電話號碼
- 23. 在地址簿中搜索信息
- 24. 當你點擊iphone電話簿時如何撥打號碼?
- 25. 如何從地址簿中檢索手機號碼iOS
- 26. iphone地址簿
- 27. Android - 獲取地址的電話號碼
- 28. 如何使用pyObjc將兩個電話號碼添加到地址簿?
- 29. 在iPhone平臺上撥打電話地址簿問題
- 30. 如何使用iPhone中的MKReverseGeocoder獲取地址和電話號碼
AlBeebe找到聯繫人, 不幸的是它需要更多的時間在設備上(iPhone 4,4.2)。我花了15秒鐘的地址簿3000) – Rabih 2011-02-25 12:39:15