我正在开发一个应用程序,需要来自Addressbook的记录,我需要所有的联系细节,而且我正在使用google服务获取长期的联系地址,并将这些详细信息存储到SQLite。
现在的问题是:
1)。哪个选项更好,在SQLite中存储联系人的唯一记录标识符还是存储联系人的所有详细信息?
2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?
发布于 2012-01-19 13:40:40
1)。哪个选项更好,在SQLite中存储唯一的联系人记录标识符,还是存储联系人的所有详细信息?
我想说的是,没有必要存储整个数据,因为这些数据已经存储在设备中,所以一个简单的标识符就可以了。
2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?
是的,它每次都必须引用相同的记录,这就是为什么它是唯一的标识符。
此外,我建议直接从源: AddressBook阅读AddressBook框架中的唯一标识符部分:苹果通讯录编程指南。
希望这能有所帮助。
发布于 2014-11-27 19:06:53
ABRecordID a.k.a.唯一标识符是识别每个记录的好方法。然而,苹果文档确实指出了这个API返回的ABRecordID的一些值得注意的要点。
地址簿数据库中的每个记录都有一个唯一的记录标识符。此标识符始终引用相同的记录,除非删除该记录或重置数据。可以安全地在线程之间传递记录标识符。它们不能保证在不同的设备上保持不变。
因此,回答你的问题。哪个选项更好,在SQLite中存储联系人的唯一记录标识符还是存储联系人的所有详细信息?
我建议您存储在SQLite DB中的最小细节是:名称、姓氏、创建日期和记录ID。
原因是,在苹果文档中再次提到:
保存对特定记录的长期引用的推荐方法是,除了存储标识符之外,还存储名字和姓氏的散列。当您按ID查找记录时,将该记录的名称与存储的名称进行比较。如果它们不匹配,使用存储的名称查找记录,并为记录存储新的ID。
注意,我也插入了创建日期sqLite DB,因为用户可能会更改联系人的名称,但是即使在设备重置上,创建日期也是一样的。
2)。如果您的答案是标识符,那么这个唯一的记录标识符每次都会引用相同的记录吗?
在解释你的第一个问题时,我想我也回答了这个问题。
发布于 2012-05-01 07:46:56
地址簿唯一标识符并不总是相同的。如果你运行一些同步应用程序,比如的google,那么它就有可能改变,因为它会删除联系人,然后再添加。最好的方法是生成一些哈希代码,如合并所有属性,然后签入db,如果不匹配,则从sqlite中删除不匹配的属性,并在db中添加新的属性。
记住,如果你是在一个单一的设备,那么没有问题的id。但是,如果您的联系人是与任何服务器的设备,如mac。那么你需要找到一个更好的解决方案。我找到了我提到过的。
https://stackoverflow.com/questions/8926491
复制相似问题