CNSaveRequest.addGroup和deleteGroup不会立即更改联系人中的组

时间:2015-11-04 06:18:39

标签: ios swift contact

在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)")
}

1 个答案:

答案 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 {
    }
}