我有一个数据库,它存储所有本地用户联系人。
现在我想使用新的框架(contact框架),我的问题是,cncontact现在有了一个新的标识符(不再是自动增加的标识符),称为“标识符”,我不能用联系人的潜在更新来处理数据库中的旧条目。
我有两个问题:
在Xcode调试器中,我可以在cncontact中将ioslegacycidentifier(旧的,自动递增的)视为一个属性,如何在不调用私有API的情况下获取它?
我看不到cncontact的“lastModificationDate”(在abAddressBook框架中,它称为kabpersonModificationDateProperty),如何使用新框架获取它。
谢谢。
[编辑]:我已经为苹果开了一张机票,答案是:
没有基于以下内容的解决方案:
1)ioslegacycidentifier是cncontact的私有API。2)修改
CNContact上没有提供日期。
要迁移数据库,您可以按姓名匹配联系人并消除歧义。
通过手动匹配其他属性,如电子邮件地址或电话
数字。
我们现在正在关闭此报告。
正如你所看到的,没有真正的解决办法,我们不得不猜测……

最佳答案

1.不存在。只有私有选择器

[CNContact iOSLegacyIdentifier];

或者你也可以得到同样的
[CNContainer CNContainerIOSLegacyIdentifierKey];

请注意,这不是在框架中编译的。使用执行选择器
2.新框架中没有此类属性。如果反汇编contact框架,可以看到uniqueid仍然用于涉及底层核心数据的谓词中。但这对你来说是件好事,你可以和私人挑选者一起跳舞。
(责怪苹果,而不是我没有办法)。看看框架的内部。

08-18 17:22