3

似乎它在 iPhone 模拟器中非常简单,代码在实际设备上运行良好我收到了 recordDoesNotExist 错误。基本上我只是从 CNContactPickerViewController 中选择一个联系人并将其添加到 CNGroup

func getGroup(cb:@escaping (CNGroup?)->()){
    do{
        let groups = try store.groups(matching: nil).filter{$0.name == "someGroup"}

        if let group = groups.first{
            print("got a group")
            return cb(group)
        }
        let g = CNMutableGroup()
        g.name = "someGroup"
        let sr = CNSaveRequest()
        sr.add(g, toContainerWithIdentifier: nil)
        try store.execute(sr)
        return getGroup(cb:cb) //try again this might create a indefinate loop if try doesnt stop execution until end of do statement
    }catch{
        DispatchQueue.main.async {
            self.present(Alerter("Error", "encountered an error fetching the group"), animated: true)
            return cb(nil)
        }
    }
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
 getGroup{group in
  guard group != nil else {return}
  let sr = CNSaveRequest()
  sr.add(contact, to:group!)
  do{
    try self.store.execute(sr)
  }catch{
    print(error)
  }
 }

这在模拟器中工作正常,但在我的手机上不起作用,我可以使用标识符查询此联系人并且联系人在商店中但是每当我尝试添加到组时,我都会收到错误“保存请求失败,因为它更新不存在或已被删除的记录。”

4

0 回答 0