首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通讯录联系人+ SQLite数据库的唯一记录标识符

通讯录联系人+ SQLite数据库的唯一记录标识符
EN

Stack Overflow用户
提问于 2012-01-19 13:06:22
回答 4查看 1.5K关注 0票数 3

我正在开发一个应用程序,需要来自Addressbook的记录,我需要所有的联系细节,而且我正在使用google服务获取长期的联系地址,并将这些详细信息存储到SQLite。

现在的问题是:

1)。哪个选项更好,在SQLite中存储联系人的唯一记录标识符还是存储联系人的所有详细信息?

2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-19 13:40:40

1)。哪个选项更好,在SQLite中存储唯一的联系人记录标识符,还是存储联系人的所有详细信息?

我想说的是,没有必要存储整个数据,因为这些数据已经存储在设备中,所以一个简单的标识符就可以了。

2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?

是的,它每次都必须引用相同的记录,这就是为什么它是唯一的标识符。

此外,我建议直接从源: AddressBook阅读AddressBook框架中的唯一标识符部分:苹果通讯录编程指南

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2014-11-27 19:06:53

ABRecordID a.k.a.唯一标识符是识别每个记录的好方法。然而,苹果文档确实指出了这个API返回的ABRecordID的一些值得注意的要点。

地址簿数据库中的每个记录都有一个唯一的记录标识符。此标识符始终引用相同的记录,除非删除该记录或重置数据。可以安全地在线程之间传递记录标识符。它们不能保证在不同的设备上保持不变。

因此,回答你的问题。哪个选项更好,在SQLite中存储联系人的唯一记录标识符还是存储联系人的所有详细信息?

我建议您存储在SQLite DB中的最小细节是:名称、姓氏、创建日期和记录ID。

原因是,在苹果文档中再次提到:

保存对特定记录的长期引用的推荐方法是,除了存储标识符之外,还存储名字和姓氏的散列。当您按ID查找记录时,将该记录的名称与存储的名称进行比较。如果它们不匹配,使用存储的名称查找记录,并为记录存储新的ID。

注意,我也插入了创建日期sqLite DB,因为用户可能会更改联系人的名称,但是即使在设备重置上,创建日期也是一样的。

2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?

在解释你的第一个问题时,我想我也回答了这个问题。

虽然我已经在这里粘贴了大部分内容,但它总是建议阅读文档。

票数 2
EN

Stack Overflow用户

发布于 2012-05-01 07:46:56

地址簿唯一标识符并不总是相同的。如果你运行一些同步应用程序,比如的google,那么它就有可能改变,因为它会删除联系人,然后再添加。最好的方法是生成一些哈希代码,如合并所有属性,然后签入db,如果不匹配,则从sqlite中删除不匹配的属性,并在db中添加新的属性。

记住,如果你是在一个单一的设备,那么没有问题的id。但是,如果您的联系人是与任何服务器的设备,如mac。那么你需要找到一个更好的解决方案。我找到了我提到过的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8926491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档