删除 iOS 个联系人组
Removing an iOS contact group
有人尝试使用 iOS 9 Contacts 框架删除现有联系人组吗?
我初始化联系人存储并请求联系人组列表,这为我提供了一个包含 CNGroup
个实例的数组:
var groups: [CNGroup]?
do {
self.groups = try contactStore.groupsMatchingPredicate(nil)
}
catch { ... }
然后我在 table 视图中显示组。当用户滑动 table 视图单元格时,我想从联系人存储中删除相应的组。
但是,CNContactStore
的 deleteGroup
方法需要一个 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)
我意识到这是因为 CNGroup
是 CNMutableGroup
的超类,但是我又一次看不到如何使用 [=15= 初始化 CNMutableGroup
]实例。
我已请求访问联系人框架。 Xcode 7.3,iOS 9.2.1。
那么,关于如何删除联系人组有什么想法吗?
投射 CNGroup 的可变副本可以解决此问题。
let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group.mutableCopy() as! CNMutableGroup)
do {
try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }
有人尝试使用 iOS 9 Contacts 框架删除现有联系人组吗?
我初始化联系人存储并请求联系人组列表,这为我提供了一个包含 CNGroup
个实例的数组:
var groups: [CNGroup]?
do {
self.groups = try contactStore.groupsMatchingPredicate(nil)
}
catch { ... }
然后我在 table 视图中显示组。当用户滑动 table 视图单元格时,我想从联系人存储中删除相应的组。
但是,CNContactStore
的 deleteGroup
方法需要一个 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)
我意识到这是因为 CNGroup
是 CNMutableGroup
的超类,但是我又一次看不到如何使用 [=15= 初始化 CNMutableGroup
]实例。
我已请求访问联系人框架。 Xcode 7.3,iOS 9.2.1。
那么,关于如何删除联系人组有什么想法吗?
投射 CNGroup 的可变副本可以解决此问题。
let saveRequest = CNSaveRequest()
saveRequest.deleteGroup(group.mutableCopy() as! CNMutableGroup)
do {
try contactStore.executeSaveRequest(saveRequest)
}
catch { ... }