问题标签 [cncontainer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - Swift 以编程方式添加本地联系人容器
有什么方法可以快速添加联系人容器吗?我查看了 CNContainer,但似乎找不到方法。如果没有办法做到这一点,有谁知道如何手动将本地容器添加到设备?
ios - 为什么我无法从 Apple iOS Contacts Framework 的默认容器中检索组?
我有一个 iOS 应用程序可以访问联系人存储的默认容器并检索该容器中的组。在我退出安装了该应用程序的 iPhone 8 设备后,然后使用另一个帐户登录。然后注销并使用我的原始帐户登录,该应用程序不再能够从默认容器中检索组。
为什么要这样做,我该如何解决?
以下是相关代码:
这是调试窗口输出:
我在任何类之外的 swift 文件中全局初始化了联系人存储:
这个请求用户访问联系人的代码在 viewDidLoad() 回调方法中。initUTIGroups() 方法是我尝试从默认容器中检索组的地方。
我检索了联系人存储中的所有容器,并将它们与默认容器进行了比较。看起来当前的默认容器与我第一次退出 iCloud 之前的默认容器不是同一个容器。我找到了包含组的容器,这些组与我在第一次退出 iCloud 之前从默认容器中检索到的组相同。
是否有我可以编写的代码来防止问题或在问题发生后解决问题?
swift - 苹果联系人框架和交换服务器
我正在尝试使用 Apple 的联系人框架获取所有联系信息,并且已经成功处理了请求许可、访问数据等。
如果容器是 iCloud、gmail 等,我可以获取、过滤、枚举容器中的联系人……但不适用于 Microsoft Exchange 服务器。
根据 Apple 的文档,交换服务器可能有多个容器,这已经是我从服务器中获取的内容,我正在尝试获取数据,但我没有从服务器获得任何联系人,即使我可以在使用 Apple 时查看和搜索同一服务器的联系人自己的联系人应用程序。
此时有两个问题:
问题 1: 当我得到容器列表时,我得到了多个项目,它们具有不同的标识符但具有相同的 accountIdentifier 值。有趣的是,即使我们在调试日志中看到了这个值,CNContainer 也没有名为 accountIdentifier 的可访问属性,而且我找不到检查这些容器是否来自同一个帐户的方法。
问题 2: 当我在 Apple 的联系人应用程序中检查相同的帐户时,其中一个容器实际上是一个交换目录,它只允许搜索联系人而不是列出所有人。它充当公司的全球地址列表。如何使用 Apple 的联系人框架(如 Mac 上的 Apple 联系人应用程序)对此类容器 bu 进行搜索。
提前致谢。
ios - 如何将我的 iOS 应用程序的默认联系人容器设置为保存在 iCloud 中的联系人容器?
我正在使用 Swift 和 Xcode 13.1 编写一个 iOS 应用程序。我正在使用联系人框架,我读到每个应用程序都有一个默认的联系人容器,并且一个应用程序中的默认容器可以与另一个应用程序中的默认容器不同,并且整个设备没有默认容器。
什么决定了 Xcode 项目创建的应用程序的默认容器是什么?我没有为我的应用程序设置默认容器,并且不知何故,Google 帐户的联系人容器成为我的应用程序的默认联系人容器。如何使用代码为我的应用设置默认联系人容器?
如何找出 iOS 随附的 Apple 通讯录应用程序的默认容器?我想将我的应用程序的默认联系人容器设置为与 Apple 的联系人应用程序相同的默认容器,如果那是保存在 iCloud 上的联系人容器。如果没有,我想将我的应用程序的默认联系人容器设置为保存在 iCloud 中的联系人容器。我假设只有一个联系人容器保存在 iCloud 上。
ios - 如何使用 Swift 和 Xcode 访问 iOS 中 CNContainer 对象的 externalIdentifier?
如何访问 CNContainer 对象的 externalIdentifier?
externalIdentifier 不是 CNContainer 对象的实例属性。我将 CNContainer 对象的描述属性打印到调试窗口。我在下面用粗体显示“externalIdentifier”。
<CNContainer: 0x2829a43f0: identifier=32B14F4B-7299-4AA5-BADD-85344DB3D7B8, name=Contacts, type=3 (CardDAV), iOSLegacyIdentifier=1346, accountIdentifier=012AF8C6-A3AB-4AD6-8C91-5FB5266CC8E6, enabled=1, permissions= <CNContainerPermissions: 0x2819a21e0: canCreateContacts=NO, canDeleteContacts=NO, canCreateGroups=NO>, externalIdentifier =/dav/brenebrownfan/Contacts/, externalModificationTag=c7e1249ffc03eb9ded908c236bd1996d, externalSyncTag=(nil), externalSyncData={length = 95, bytes = 0x62706c69 73743030 d2010203 045e6d61 ... 00000000 0000003a },constraintsPath=(nil),meIdentifier=635,restrictions=0,guardianRestricted=0,lastSyncDate=2019-09-25 08:14:59 +0000>
ios - 有人知道如何在 iOS 设备中创建 CNContainer 吗?
Apple 文档说本地类型的 iOS 设备中只有一个 CNContainer。创建 exchange 类型的容器需要使用 Exchange,创建 cardDAV 类型的容器也需要服务器。有没有办法创建一个未分配类型的容器?我需要在 Swift 中以编程方式执行此操作才能在我的 iOS 应用程序中使用。