2013-08-08 4 views
5

के माध्यम से ABAddressBook संपर्क को सॉर्ट करने के लिए कैसे करें मेरे पास एक प्रकार का फ़ंक्शन है जो अंतिम नाम से पता पुस्तिका टाइप करता है, मुझे इस कोड को संशोधित करने की आवश्यकता है ताकि यह पहले नाम से क्रमबद्ध हो। मुझे इस कोड में परिवर्तन करने की आवश्यकता कहां है। मुझे यह एक साधारण बदलाव पता है लेकिन मैं इसे समझने में असमर्थ हूं। इस कोड है कि अंतिम नामपहले नाम

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy 
             (
              kCFAllocatorDefault, 
              CFArrayGetCount(people), 
              people 
             ); 


CFArraySortValues 
     (
     peopleMutable, 
     CFRangeMake(0, CFArrayGetCount(peopleMutable)), 
     (CFComparatorFunction) ABPersonComparePeopleByName, 
     (void*) ABPersonGetSortOrdering() 
     ); 

उत्तर

8

bellow करके अपने तरह विधि लागू बजाय kABPersonSortByFirstName डाल (void*) ABPersonGetSortOrdering() की: -

CFArraySortValues(peopleMutable, 
        CFRangeMake(0, CFArrayGetCount(peopleMutable)), 
        (CFComparatorFunction) ABPersonComparePeopleByName, 
        kABPersonSortByFirstName); 

क्रेडिट this

+0

धन्यवाद काम करने के लिए, मुझे आश्चर्य है कि जब मैं पहले ढेर अतिप्रवाह में इसके लिए खोज की है और यह भी मैं kABPersonSortByLastName साथ करने की कोशिश की थी कि क्यों फ्लॉप मुझे लगता है कि पेज को खोजने लगता है कि और यह त्रुटि से पता चला तो मैंने दूसरे की कोशिश करने से परेशान नहीं किया: पी – Gamerlegend

1

द्वारा संपर्क सूची क्रमबद्ध करता प्रयास करें इस

ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); 
    addressBookArray = (__bridge_transfer NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByLastName); 

आशा है कि यह आप में मदद करता है।

0

को जाता है आप उन्हें सुलझाने के लिए इस कोड का उपयोग कर सकते हैं और अगर आप एक ही कोड के साथ काम करना चाहते हैं नितिन के उत्तर की जांच करें: -

 ABRecordRef person = (__bridge ABRecordRef)record; 

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

     if ([beginsPredicate evaluateWithObject:firstName]) 
     { 
      ABRecordID abRecordID = ABRecordGetRecordID(person); 

      [self.filteredPeople addObject:[NSNumber numberWithInt:abRecordID]]; 
     } 

आशा है कि यह आपके लिए काम करेगा।

0

यह मेरे लिए काम किया:

//Sorting 

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); 
      ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); 
      NSArray *allPeople = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName); 
संबंधित मुद्दे