首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CNContact :从ABAddressBook迁移: iOSLegacyIdentifier + lastModifcationDate

CNContact :从ABAddressBook迁移: iOSLegacyIdentifier + lastModifcationDate
EN

Stack Overflow用户
提问于 2015-09-22 16:08:13
回答 2查看 1.3K关注 0票数 3

我有一个存储所有本地用户联系人的DB。现在我想使用新的框架(联系人框架),我的问题是,CNContact现在有一个新的标识符(不再是自动递增的标识符),称为“标识符”,而且我不能在数据库中使用可能更新联系人的旧条目。

我有两个问题:

  1. 在xcode调试器中,我可以看到_iOSLegacyIdentifier(旧的、自动增量的)是CNContact中的一个属性,如何在没有私有API调用的情况下获得它?
  2. 我看不到CNContact的“CNContact”(在ABAddressBook框架中称为kABPersonModificationDateProperty),如何使用新的框架获得它。

谢谢。

编辑:我已经为苹果开了一张机票,答案是:

没有计划在以下基础上解决这一问题: 1) iOSLegacyIdentifier是CNContact的专用API。2)在CNContact上不提供修改日期。 要迁移DB,您可以按名称匹配联系人,并通过手动匹配其他属性(如电子邮件地址或电话号码)来消除歧义。 我们现在结束这份报告。

正如你所看到的,没有真正的解决办法,我们不得不猜测..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 09:52:02

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

代码语言:javascript
运行
复制
[CNContact iOSLegacyIdentifier];

或者你也可以得到同样的

代码语言:javascript
运行
复制
[CNContainer CNContainerIOSLegacyIdentifierKey];

请注意,这不是在框架中编译的。使用执行选择器

2.新框架中没有这类财产。如果您拆卸联系人框架,您可以看到uniqueId仍然用于触及底层核心数据的谓词中。但这是你的作品,再次与私人选择者共舞

(指责苹果,而不是我,因为没有办法)。看看框架的内部结构。

票数 -1
EN

Stack Overflow用户

发布于 2016-09-22 18:42:25

您可以使用新的联系人框架获得ContactID (iOSLegacyIdentifier)。我用这个在我的应用程序中找到iOSLegacyIdentifier进行特定的联系,你可以随意修改。

代码语言:javascript
运行
复制
let predicate = CNContact.predicateForContacts(matchingName: "contactName")
        let toFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactIdentifierKey]

        do{
            let contacts = try self.contactStore.unifiedContacts(matching: predicate, keysToFetch: toFetch as [CNKeyDescriptor])

            for contact in contacts{
                var diccionario:[String : Any] = contact.dictionaryWithValues(forKeys: ["iOSLegacyIdentifier"])
                //With this you can see/obtain iOSLegacyIdentifier
                print(diccionario["iOSLegacyIdentifier"] as! Int)
                return;
            }
        } catch let err{
            print(err)
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32721698

复制
相关文章

相似问题

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