2016-06-29 7 views
0

こんにちは、私はiOS開発を初めて利用しています。私はデフォルトの連絡先アプリから連絡先を選択したいと思います。そのために、ユーザーがiPhoneのデフォルトの連絡先アプリから連絡先を選択できるようにするアプリケーションを作成しました。 iOS 9以降のバージョンでは、次のコードを使用しています。CNContactPickerViewControllerを目的のCで使用する方法は?

- (IBAction)btnAction:(id)sender { 

    CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init]; 

    contactPicker.delegate = self; 
    contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey; 

    [self presentViewController:picker animated:YES completion:nil]; 
} 

-(void) contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{ 
    NSLog(@"Contact : %@",contact); 
} 

-(void)contactPickerDidCancel:(CNContactPickerViewController *)picker { 
    NSLog(@"Cancelled"); 
} 

また、私のuiviewcontrollerにCNContactPickerDelegateデリゲートを追加しました。上記のコードを実行すると、連絡先アプリが開きますが、連絡先をタップするとアプリが空白になります。

ありがとうございます。誰でも、Objective-CでCNContactPickerViewControllerを使用するための知識を共有してください。

答えて

-1

次の行にコメントしてもう一度お試しください。

//contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey; 
6

問題は、このコードによって引き起こされる:

contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey; 

displayedPropertyKeysNSString値が含まれNSArrayを期待しています。あなたのコードでは、NSStringをNSArrayにキャストし、このプロパティの値として設定しようとしています。

あなたがあなたのコードを変更する必要があります[1]

contactPicker.displayedPropertyKeys = @[CNContactGivenNameKey]; 
0
-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts{ 

    NSLog(@" %@",contacts); 

    CNContact *contact=[contacts objectAtIndex:0]; 

    NSLog(@"name = %@",contact.givenName); 


} 

:複数選択から与えられた名前をフェッチするために上記のコードhttps://i.stack.imgur.com/9Sp1G.png使用、

2
#pragma mark - CNContactPickerViewController Delegate method implementation 
(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact 
{ 
    NSMutableArray *contactNumberArray = [[NSMutableArray alloc]init]; 
    selectedName=[NSString stringWithFormat:@"%@",contact.givenName]; 
    NSLog(@"%@",selectedName); 
    NSString *tempString = [NSString stringWithFormat:@"name : %@ %@ %@\n",contact.givenName, contact.familyName, contact.organizationName]; 
    // // 1. (Phone Numbers) 
     tempString = [NSString stringWithFormat:@"%@phoneNumbers : ",tempString]; 
     // NSArray*phoneNumber = contact.phoneNumbers; 
     for (CNLabeledValue *phoneNumber in contact.phoneNumbers) 
     { 
      CNPhoneNumber *phone = phoneNumber.value; 
      tempString = [NSString stringWithFormat:@"%@<%@>",tempString,phone.stringValue]; 
      [contactNumberArray addObject:phone]; 
      selectedPhNumber=[[NSString stringWithFormat:@"%@",phone.stringValue] stringByReplacingOccurrencesOfString:@" " withString:@""]; 
      NSLog(@"%@",selectedPhNumber); 
     } 

     //2. (Emails) 
     tempString = [NSString stringWithFormat:@"%@\n Email : ",tempString]; 
     for (CNLabeledValue *email in contact.emailAddresses) 
     { 
      selectedEmail=[NSString stringWithFormat:@"%@", email.value]; 
      tempString = [NSString stringWithFormat:@"%@<%@>",tempString,email.value]; 
       [contactNumberArray addObject:email]; 
      NSLog(@"%@",selectedEmail); 
     } 
[self sendRefferelDetailsToServer]; 

} 
+0

はこのその作業罰金を試してみてください私のために。 – jeevan

関連する問題