嘿,
我正在保存数据库中所有联系人的副本
启动后,我想检查通讯录中是否有新联系人,以便将其添加到我的数据库中。
如何执行此检查?我找不到合适的逻辑来实现它。
答案 0 :(得分:3)
在地址簿中找到“新联系人”并不容易。相反,你必须做这样的事情:
存储属性的last modification date并将其与每条记录进行比较可能也很聪明,这样您就可以知道现有记录是否有变化。
最后,这可能需要一段时间,具体取决于用户拥有的联系人数量。这可能是你想要做的事情,而不会阻止UI。 (另一个注意事项:地址簿类型不是线程安全的。如果你在后台线程中工作,请记住这一点。)
当您的应用程序正在运行时,您可以注册address book change notification callback以提醒您应用运行时发生的更改。
答案 1 :(得分:0)
更简单的方法(不需要太多的内存空间):
从AddressBook&amp ;;加载数据时保存应用程序数据库最新的TimeStamp。总人数。
编写一个检查功能,并在需要时调用它
检查功能:获取所有联系人的最新修改日期,立即获取总计数,只需将最新日期与TimeStamp进行比较:
BOOL beNeedRefresh = NO;
if(latest> TimeStamp){
beNeedRefresh = YES;
}否则if(addressbook count!=您的数据库计数){
beNeedRefresh = YES;
}
如果(beNeedRefresh){
刷新数据库!!!!
}