在Swift中,当您更新"联系"通过将CNSaveRequest
传递给CNContactStore
,更新会立即更改您的原生联系人应用中的联系人。
但是,当你添加或删除" Group" (CNGroup
)将CNSaveRequest
传递给CNContactStore
,添加或删除不会立即更改原生联系人应用中的群组。
如果添加或删除" Group",您必须终止并重新启动您的应用或原生联系人应用。
有没有办法立即更改原生联系人应用中的群组?
例如,在代码A的情况下,您可以立即看到本机联系人应用程序中的更改。如果是代码B,您无法立即看到更改,您必须重新启动应用程序或本机联系人应用程序。
我不使用ABAddressbook
,所以我们自然而然地谈论iOS9。
[代码A]
let req = CNSaveRequest()
req.updateContact(fooContact)
do {
try contactStore.executeSaveRequest(req)
} catch {
print("\(error)")
}
[代码B]
let req = CNSaveRequest()
req.addGroup(mutableGroup)
do {
try contactStore.executeSaveRequest(req)
} catch {
print("\(error)")
}
答案 0 :(得分:1)
抱歉,我自己解决了这个问题...
我添加了代码,用于刷新显示dataSource
数组的UITableView
CNGroup
。例如,......
var groups: [CNGroup] = [] // dataSource of myTableView
......
// Custome function to be called when you want to refresh myTableView
function refreshMyTableView() {
do {
// I forget adding the line below to refresh tableview datasource
try self.groups = contactStore.groupsMatchingPredicate(nil)
myTableView.reloadData()
} catch {
}
}