gpt4 book ai didi

objective-c - objective-c 通过电话号码在地址簿中查找联系人

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:48 24 4
gpt4 key购买 nike

like title 通过电话号码在设备通讯录中查找联系人的最佳和最有效的方法是什么?实际上我使用这样的方法:

注意:
[rm getElencoContatti] 返回地址簿中的所有联系人
[contatto getID] 从地址簿返回联系人 ID
[contatto getNumeriContatto] 返回地址簿中所有联系人的电话号码

+(NSMutableDictionary *)getNomeContattoDaNumero:(NSString *)numeroTelefono {

NSMutableDictionary *returnValue = [[NSMutableDictionary alloc]init];
NSNumber *idContact;

for(ContattoRubrica *contatto in [rm getElencoContatti]) {
idContact = [contatto getID];
for(id numero in [contatto getNumeriContatto]) {

if([numeroTelefono isEqualToString:[numero objectForKey:@"numeroTelefono"]]) {

[returnValue setValue:[contatto getNomeContatto] forKey:@"nome"];
[returnValue setValue:idContact forKey:@"idContatto"];

return returnValue;
}
}
}

[returnValue setValue:numeroTelefono forKey:@"nome"];
[returnValue setValue:[NSNumber numberWithInt:-1] forKey:@"idContatto"];

return returnValue;

}

我用大约200个联系人的通讯录测试了这个方法,这个功能很慢。是否存在任何自动执行此操作的 ABAddressbook.h 方法?

提前致谢。

最佳答案

iOS 上的

ABAddressBook 提供的搜索功能少于 Mac OS 上的等效 API。不幸的是,过滤联系人将需要线性扫描,例如上面显示的扫描。 Apple's documentation包括使用基于 block 的谓词的略有不同的方法,但它基本上等同于您在此处所做的。

一种可能的加速方法是避免构建所有 ContattoRubrica 对象,直到您执行搜索并找到(或未找到)匹配的 ABPerson记录。在任何情况下,您都应该使用 Instruments 来确定您的代码将大部分时间花在哪里。

关于objective-c - objective-c 通过电话号码在地址簿中查找联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com