0

NSStringHI ここでは、関数から姓名などの値を収集し、その配列に割り当てる以下の関数を示します。

- (void)getPersonOutOfAddressBook
{


    ABAddressBookRef addressBook = ABAddressBookCreate();
if (addressBook != nil)
{
    NSLog(@"Succesful.");

    NSArray *allContacts = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);

    NSUInteger i = 0;
    NSLog(@" Result :%d",[allContacts count]);
    for (i = 0; i < [allContacts count]; i++)
    {
        ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];



        NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);

        NSString *lastName =  (__bridge_transfer NSString *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);


        NSMutableArray *name = [NSMutableArray array];
        [name addObject:firstName];
        [name addObject:lastName];


        [self displaynames:name];

        //NSLog(@"FirstNAme::::: LastNAME::::MobileNUMb::::EMail:::  %@ %@",firstName,lastName);

        ABMultiValueRef mobile=ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);

        for (int k=0;k<ABMultiValueGetCount(mobile); k++)
        {
            NSString *mobileNo = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(mobile, k);
          //  NSLog(@"mobile number: %@",mobileNo);


        }

}

-(void)displaynames:(NSMutableArray*)names{
for(NSMutableArray* name in names){

    NSLog(@"MyResult:%@ %@",[names objectAtIndex:0],[names objectAtIndex:1]);

    messageToSend = [messageToSend stringByAppendingString:[names objectAtIndex:0]];
    messageToSend = [messageToSend stringByAppendingString:[names objectAtIndex:1]];
}
}

また、データを送信するために

- (IBAction)sendContacts:(id)sender
{

NSData *textData = [self.messageToSend dataUsingEncoding:NSASCIIStringEncoding];
//send data to all connected devices
[self.session sendDataToAllPeers:textData withDataMode:GKSendDataReliable error:nil];
}

ここで messageToSend は NSMutableString です

したがって、上記のコードでは、すべての名と姓を収集し、配列に配置しています。これをiphoneで実行すると、エラーが表示されます[__NSArrayM insertObject:atIndex:]: object cannot be nil'

名と姓が2回表示された後NSLog(@"Myresult");、どこが間違っているのか、同じように電話番号を収集する方法を誰か教えてもらえますか.そのエラーを回避するために上記のコードで何をしなければならないか全て。

表示します

2013-06-03 11:40:12.524 GetContacts[1173:1bb03] Succesful.
2013-06-03 11:40:12.539 getlist[1173:1bb03]  Result :2
2013-06-03 11:40:12.567 getlist[1173:1bb03] MyResult:john cena
2013-06-03 11:40:12.568 getlist[1173:1bb03] Successsssss::::::
2013-06-03 11:40:12.569 getlist[1173:1bb03] MyResult:john cena
2013-06-03 11:40:12.571 getlist[1173:1bb03] Successsssss::::::
2013-06-03 11:40:12.734 getlist[1173:1bb03] MyResult:peter john
2013-06-03 11:40:12.735 getlist[1173:1bb03] Successsssss::::::
2013-06-03 11:40:12.736 getlist[1173:1bb03] MyResult:peter john
2013-06-03 11:40:12.737 getlist[1173:1bb03] Successsssss::::::
4

3 に答える 3

1

最初に、配列内に入れているデータが nil かどうかを確認します。それが単にスキップされている場合です。

このようなもの:

if(firstName != nil)
    [yourMutableArray addObject:firstname];

あなたはアイデアを得る。

于 2013-06-03T06:21:29.560 に答える
0

ほとんどのものにアクセスするには、以下のコードを使用します

            CFStringRef firstName = ABRecordCopyValue(record , kABPersonFirstNameProperty);
            CFStringRef LastName = ABRecordCopyValue(record, kABPersonLastNameProperty);
            CFStringRef companyRef = ABRecordCopyValue(record, kABPersonOrganizationProperty);
            CFDateRef birthDate = ABRecordCopyValue(record, kABPersonBirthdayProperty);


            CFStringRef prefixName = ABRecordCopyValue(record , kABPersonPrefixProperty);
            CFStringRef phoneticFirstName = ABRecordCopyValue(record , kABPersonFirstNamePhoneticProperty);
            CFStringRef phoneticLastName = ABRecordCopyValue(record , kABPersonLastNamePhoneticProperty);
            CFStringRef middleName = ABRecordCopyValue(record , kABPersonMiddleNameProperty);
            CFStringRef suffixName = ABRecordCopyValue(record , kABPersonSuffixProperty);
            CFStringRef nickName = ABRecordCopyValue(record , kABPersonNicknameProperty);
            CFStringRef jobTitle = ABRecordCopyValue(record , kABPersonJobTitleProperty);
            CFStringRef department = ABRecordCopyValue(record , kABPersonDepartmentProperty);
            CFStringRef notes = ABRecordCopyValue(record , kABPersonNoteProperty);



            NSString *LastNameStr = (NSString *)LastName;
            NSString *firstNameStr = (NSString *)firstName;
            NSString *companyStr = (NSString *)companyRef;
            NSDate *birthDateValue = (NSDate *)birthDate;

            NSString *prefixNameStr = (NSString *)prefixName;
            NSString *phoneticFirstNameStr = (NSString *)phoneticFirstName;
            NSString *phoneticLastNameStr = (NSString *)phoneticLastName;
            NSString *middleNameStr = (NSString *)middleName;
            NSString *suffixNameStr = (NSString *)suffixName;
            NSString *nickNameStr = (NSString *)nickName;
            NSString *jobTitleStr = (NSString *)jobTitle;
            NSString *departmentStr = (NSString *)department;
            NSString *notesStr = (NSString *)notes;
于 2013-06-04T03:18:42.677 に答える
0

誤って別のView Controllerの代わりにView Controllerをプッシュすると、このエラーが発生します。私のため..

私は次のようにコーディングしました.. MainViewController *mainVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"mainView"];

[self.navigationController presentViewController:mainVC アニメーション:YES 完了:nil];

代わりに .... SWRevealViewController *mainVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"revealView"];

[self.navigationController presentViewController:mainVC アニメーション:YES 完了:nil];

したがって、正しいView Controllerにプッシュしていることを確認してください。これが誰かに役立つことを願っています。

于 2015-04-09T05:21:50.440 に答える