【问题标题】:Programmatically remove contact from adress book on specific time in swift [closed]以编程方式在特定时间快速从通讯录中删除联系人[关闭]
【发布时间】:2016-05-14 10:18:30
【问题描述】:

我正在尝试以编程方式在特定时间从通讯录中删除联系人。在 Swift 中甚至有可能吗,Apple 允许吗?我已经熟悉CNContactStore因为我已经开始在电话簿中添加联系人了。授予对联系人等的访问权限。但我不知道如何在特定时间以编程方式从地址簿中删除联系人(永远)。

感谢任何帮助!

【问题讨论】:

  • Actually I want to use NSTimer 为什么?

标签: ios swift contacts-framework


【解决方案1】:

参考:

http://www.ios-blog.co.uk/tutorials/swift/contacts-framework-p2/


解释(来自链接):

删除联系人

“iOS 联系人框架为我们提供了 deleteContact(:) 函数来帮助我们删除联系人。希望您到目前为止已经充分理解了本教程,以便继续进行,因为我只是概述了该过程并让您试一试。就像我们在整个教程中一样,我们将实例化一个 CNSaveRequest 类型的对象,发出我刚才提到的 deleteContact(:) 函数并将可变联系人传递给它。然后,就像我们创建联系人或更新联系人我们将使用 executeSaveRequest(_:)。

请注意,删除意味着删除!已删除的联系人无法再次获取。这在模拟器上应该没有太大关系,但您确实需要确保您有适当的安全协议,这样您就不会删除用户联系人。

那么,您是否设法让删除工作正常进行?好的,好的,我会把完整的代码贴出来给大家看看。”


解决方案(来自链接):

let predicate = CNContact.predicateForContactsMatchingName("John")
let toFetch = [CNContactEmailAddressesKey]

do{
  let contacts = try store.unifiedContactsMatchingPredicate(predicate,keysToFetch: toFetch)
  guard contacts.count > 0 else{
    print("No contacts found")
    return
  }

  guard let contact = contacts.first else{

return
  }

  let req = CNSaveRequest()
  let mutableContact = contact.mutableCopy() as! CNMutableContact
  req.deleteContact(mutableContact)

  do{
    try store.executeSaveRequest(req)
    print("Success, You deleted the user")
  } catch let e{
    print("Error = \(e)")
  }
} catch let err{
   print(err)
}

【讨论】:

  • 为什么投反对票?我需要一个解释!
  • 非常感谢您的帮助。它可以正常工作。我真的不知道为什么要投反对票。干杯:)实际上我也通过谷歌搜索找到了相同的解决方案,我一定是愚蠢的:D
  • @TarvoMäesepp 哈哈 :D 乐于助人!
  • @TarvoMäesepp Idk,我赞成你的问题:/
  • 应该在第一行声明 store 如:let store = CNContactStore()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多