我需要从应用程序中引用ABPerson记录。我使用由
- (NSString *)uniqueId并把它附加到我的应用程序联系记录上。
此外,我还保存了ABPerson's vCardRepresentation作为后盾。如果应用程序不再能够使用ABRecord定位uniqueID,应用程序要求用户使用保存的vCardRepresentation恢复adressbook记录。一切正常。
不幸的是,一位朋友告诉我,uniqueId并不是一成不变的:在同步过程中,uniqueId可能会突然改变。
据他说,在iOS文档的某个地方,苹果解释说,不可变的使用uniqueId识别ABPersons是不存在的。在OS‘Cocoa文档中,我没有找到这样的提示。
在给定的Mac上,uniqueId会突然改变吗?如果是这样的话,从外部应用程序中识别ABPerson记录的正确方法是什么?
如果uniqueID不是不可变的,我当然可以用GUID分配一个自定义属性。不幸的是,自定义字段不同步。
当然,我更喜欢使用uniqueId。
发布于 2011-09-23 08:21:28
苹果公司的技术专家给出了它的价值所在:
kABUIDProperty此记录的唯一ID。它保证永远不会改变,不管记录有多大的变化。如果需要存储对记录的引用,请使用此值。类型: kABStringProperty.可在MacOSXV10.2及更高版本中使用。在ABGlobals.h中声明。
发布于 2013-08-06 15:43:06
看来kABUIDProperty方法可能不再起作用了。我在下面的评论中看到了这篇博客文章中的更多讨论:
http://blog.clickablebliss.com/2011/11/07/addressbook-record-identifiers-on-mac-and-ios/。
例如:如果用户决定打开iCloud同步,则该用户通讯簿中的唯一ids将更改。如果用户关闭iCloud同步,它们将再次更改。
增编:也许值得看一看StackOverflow条目这里。
苹果的文档确实这么说(引用链接):
“保存对特定记录的长期引用的推荐方法是,在标识符之外存储姓名和姓氏的散列。当您按ID查找记录时,将记录的名称与存储的名称进行比较。如果它们不匹配,则使用存储的名称查找记录,并为记录存储新的ID。”
https://stackoverflow.com/questions/7084805
复制相似问题