2016-06-09 166 views
0

在我的應用程序我保存聯繫人按鈕點擊事件。點擊按鈕保存適當的聯繫人。但當我試圖按另一個按鈕,而不是保存該數據顯示錯誤的聯繫。所以我該如何解決這個問題?如何使用聯繫人框架保存聯繫人

這裏是我indexpath代碼

let fooBar = CNMutableContact() 
var store = CNContactStore() 

在cellforrow

cell.btnClick.tag = indexPath.row 
    cell.btnClick.addTarget(self, action: #selector(ViewController.buttonInsertPressed(_:)), forControlEvents: UIControlEvents.TouchUpInside) 


func buttonInsertPressed(sender:UIButton) { 

    getData() 
    let index = sender.tag 

    print(fooBar) 
    phone = dic.valueForKey("mobile").objectAtIndex(index) as! String 

    print(phone) 
    // fooBar.givenName = dic.valueForKey("name").objectAtIndex(indexPath.row) as! String 
    let name : String = dic.valueForKey("name").objectAtIndex(index) as! String 
    print(fooBar.givenName) 
    let homePhone = CNLabeledValue(label: CNLabelHome, 
            value: CNPhoneNumber(stringValue: phone)) 

    fooBar.setValue(name, forKey: "givenName") 
    fooBar.setValue([homePhone], forKey: "phoneNumbers") 
    // fooBar.phoneNumbers = [homePhone] 
    print(fooBar) 
      fooBar.middleName = "A." 
      fooBar.familyName = "Bar" 
    //  fooBar.nickname = "Fooboo" 


    if #available(iOS 9.0, *) { 
     switch CNContactStore.authorizationStatusForEntityType(.Contacts){ 
     case .Authorized: 
      createContact() 
     case .NotDetermined: 
      store.requestAccessForEntityType(.Contacts){succeeded, err in 
       guard err == nil && succeeded else{ 
        return 
       } 
       self.createContact() 
      } 
     default: 
      print("Not handled") 
      if let url = NSURL(string: "tel://\(phone)") { 
       UIApplication.sharedApplication().openURL(url) 
      } 
     } 
    } else { 
     if let url = NSURL(string: "tel://\(phone)") { 
      UIApplication.sharedApplication().openURL(url) 
     } 
     // Fallback on earlier versions 
    } 



} 


func createContact() 
{ 

    let request = CNSaveRequest() 
    request.addContact(fooBar, toContainerWithIdentifier: nil) 
    do{ 
     try store.executeSaveRequest(request) 
     print("Successfully stored the contact") 
     if let url = NSURL(string: "tel://\(phone)") { 
      UIApplication.sharedApplication().openURL(url) 
     } 




    } catch let err{ 
     print("Failed to save the contact. \(err)") 

     if let url = NSURL(string: "tel://\(phone)") { 
      UIApplication.sharedApplication().openURL(url) 
     } 
    } 


} 

請讓我知道我怎麼能解決這個問題?

回答

0

請按照這些方法

100%工作液

public func askPermissionForContacts(callBack:(Bool)->()) 
{ 
    let status : CNAuthorizationStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts) 
    if status == CNAuthorizationStatus.NotDetermined{ 
     store.requestAccessForEntityType(CNEntityType.Contacts, completionHandler: { (temp: Bool, error : NSError?) -> Void in 
      if temp == true{ 
       callBack(true) 
      }else 
      { 
       callBack(false) 
      } 
     }) 

    }else if status == CNAuthorizationStatus.Authorized { 
     callBack(true) 
    } 
    else if status == CNAuthorizationStatus.Denied { 
     callBack(false) 
    } 
} 



public func createAndSaveContact(userData : AnyObject) 
{ 
    let userDict = userData as! NSDictionary 
    let contactNew = CNMutableContact() 
    let homePhone = CNLabeledValue(label: CNLabelHome, value: CNPhoneNumber(stringValue: userDict.objectForKey("contact_phone") as! String)) 
    let homeEmail = CNLabeledValue(label:CNLabelHome, value: userDict.objectForKey("contact_email") as! String) 
    contactNew.givenName = userDict.objectForKey("contact_name") as! String 
    contactNew.phoneNumbers = [homePhone] 
    contactNew.emailAddresses = [homeEmail] 
    let request = CNSaveRequest() 
    request.addContact(contactNew, toContainerWithIdentifier: nil) 
    do{ 
     try store.executeSaveRequest(request) 
     print("Done") 

    } catch let err{ 
     print("Failed to save the contact. \(err)") 
    } 
} 
+0

它正常工作與雨燕2.2 –

相關問題