swift

2017-11-14 6 views
0

を使用してIOS 9のアレイに選択した連絡先を保存する方法連絡先の詳細を取得しました。それらをアレイに保存します.1件の連絡先を1つのアレイとして保存しようとしました。私はそれらをすべて1つの配列に格納したいと考えています。それらを保存する方法。私をガイドしてください。 まずそれが私たちの携帯電話からのすべての連絡先を表示し、私は特定のcontact.That選択した連絡先が配列 に格納する必要が選択されているが、私は答えを持って、成功した配列への連絡先を保存swift

import UIKit 
import ContactsUI 

class ViewController: UIViewController ,CNContactPickerDelegate { 
    let contactStore = CNContactStore() 
    let amount = 200 
    //var selectedContact:CNContact = CNContact() 
    //var results:[CNContact] = [] 
    var res:CNContact = CNContact() 
    var a = [String]() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     perform(#selector(contactPicker(_:didSelect:)), with: nil, afterDelay: 0) 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 

    } 


    @IBAction func contact(_ sender: Any) { 
     let cnPicker = CNContactPickerViewController() 
     cnPicker.delegate = self 
     self.present(cnPicker, animated: true, completion: nil) 
     do { 
      try contactStore.enumerateContacts(with: CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactMiddleNameKey as CNKeyDescriptor, CNContactEmailAddressesKey as CNKeyDescriptor,CNContactPhoneNumbersKey as CNKeyDescriptor])) { 
       (contact, cursor) -> Void in 
       self.res = contact 
       ///let data = Data(name: contact.givenName) 
       //self.dataArray?.addObject(data) 
      } 
     } 
     catch 
     { 
      print("Handle the error please") 
     } 
    } 
    func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) { 
     contacts.forEach { contact in 
      //let storyboard = UIStoryboard(name:"Main",bundle:nil) 
      a = [contact.givenName] 
      print("name of contacts in array \(a)") 
      let n = a.flatMap({$0}).count 
      print(n) 
      let res = amount/n 
      print(res) 
      for c in a { 
       print ("split money \(c):\(res)") 
      } 
      //print(a.count) 
      let displayViewController = self.storyboard?.instantiateViewController(withIdentifier: "DisplayViewControllerr")as! DisplayViewControllerr 
       displayViewController.b = a 
      let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 
      appDelegate.window?.rootViewController = displayViewController 
      self.navigationController?.pushViewController(displayViewController, animated: true) 
      //self.present(displayViewController,animated:false,completion: nil) 






      } 
    } 


    func contactPickerDidCancel(_ picker: CNContactPickerViewController) { 
     print("Cancel Contact Picker") 
    } 



} 
+0

新しい配列を初期化する代わりに、クラスオブジェクトを初期化するたびに、連絡先を入力して配列にプッシュします。btwコードはどこですか?私たちは理論的な説明からあなたをどうお手伝いできますか? –

+1

あなたの試したコードを表示 –

答えて

1

ありがとうございます。プログラム内の1行を変更するだけです。これは、選択されたすべての連絡先を配列に表示します。

func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) { 
     contacts.forEach { contact in 
      a+= [contact.givenName]//I changed at this place 
} 
print(a) 

0
#import <Contacts/Contacts.h> 

CNContactStore *store = [[CNContactStore alloc] init]; 
     [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) { 
      if (granted == YES) { 
       //keys with fetching properties 
       NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey]; 
       NSString *containerId = store.defaultContainerIdentifier; 
       NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId]; 
       NSError *error; 
       NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error]; 
       if (error) { 
        NSLog(@"error fetching contacts %@", error); 
       } else { 


        NSLog(@"Contact Array %@",cnContacts.description); 
       } 
      } 
     }]; 
+0

私は迅速な言語で必要です@ Rushabh – vijju

+0

あなたの応答 – vijju