删除iOS联系人组

时间:2016-03-29 16:33:18

标签: ios cncontactstore

有人试图使用iOS 9 Contacts框架删除现有的联系人组吗?

我初始化联系人存储并请求联系人组列表,这给了我一组CNGroup个实例:

var groups: [CNGroup]?

do {
    self.groups = try contactStore.groupsMatchingPredicate(nil)
}
catch { ... }

然后我在表格视图中显示组。当用户滑动表格视图单元格时,我想从联系人存储区中删除相应的组。

但是,deleteGroup CNContactStore方法需要CNMutableGroup个实例,而不是CNGroup。 Xcode给了我一个错误:

Cannot convert value of type 'CNGroup' to expected type 'CNMutableGroup'

显然,如果我尝试将CNGroup个实例投射到CNMutableGroup

let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group as! CNMutableGroup)
do {
    try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }

我在运行时遇到了崩溃:

Could not cast value of type 'CNGroup' (0x370890f8) to 'CNMutableGroup' (0x370899f4)

我意识到这是因为CNGroupCNMutableGroup的超类,但我再次看不到如何使用CNMutableGroup实例初始化CNGroup

我已请求访问Contacts框架。 Xcode 7.3,iOS 9.2.1。

那么,有关如何删除联系人组的任何想法吗?

1 个答案:

答案 0 :(得分:4)

投射CNGroup的可变副本可以解决这个问题。

let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group.mutableCopy() as! CNMutableGroup)
do {
    try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }