2014-10-09 73 views
0

我正在使用地址簿,但不希望他从Facebook带来联系人。我做了一个if语句来过滤,但是我并没有从我的数组中删除它。如何从数组中删除Facebook联系人? Ios AddressBook

ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 

    CFIndex numberOfEmails = ABMultiValueGetCount(emails); 
    userDetail.allEmails = [@[] mutableCopy]; 
    for (CFIndex i = 0; i < numberOfEmails; i++) { 

     NSString *email = CFBridgingRelease(ABMultiValueCopyValueAtIndex(emails, i)); 

     if ([email containsString:@"@facebook.com"]) { 
      NSLog(@"remove emails: %@", userDetail.allEmails); 

     } 
     [userDetail.allEmails addObject:email]; 
    } 

回答

0


我使用NSPredicate & NSCompoundPredicate用于滤波。

CFErrorRef *error = NULL; 
     ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); 
     CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
     CFIndex numberOfPeople = ABAddressBookGetPersonCount(addressBook); 
     NSMutableArray *mylist = [[NSMutableArray alloc] initWithCapacity:numberOfPeople]; 
     for(int i = 0; i < numberOfPeople; i++) { 
      ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i); 
      NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty)); 
      NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty)); 
      ABMultiValueRef email = ABRecordCopyValue(person, kABPersonEmailProperty); 
      for (CFIndex i = 0; i < ABMultiValueGetCount(email); i++) { 
       NSString *emailId = (__bridge_transfer NSString *) ABMultiValueCopyValueAtIndex(email, i); 
       NSDictionary *myObjlist = @{@"email":emailId,@"name":[NSString stringWithFormat:@"%@ %@",firstName,lastName]}; 
       //NSLog(@"Name:%@ %@ : %@", firstName, lastName,myObjlist); 
       [mylist addObject:myObjlist]; 

      } 
     } 
     //NSLog(@"mylist : %@",mylist); 
     NSPredicate *p = [NSPredicate predicateWithFormat: 
      @"SELF['email'] CONTAINS '@facebook.com'"]; 
     NSPredicate *notFilter = [NSCompoundPredicate notPredicateWithSubpredicate:p]; 
     NSArray *res = [mylist filteredArrayUsingPredicate:notFilter]; 
     NSLog(@"awesome %@", res); 

让我知道你是否有任何疑问。

相关问题