2010-12-07 19 views
20

Uygulamamın kişiler tarafından oluşturulduğu adres defteri kaynağını seçmem gerekiyor. Ben "< Gruplar" seçeneğini İletişim uygulamasındaiPhone Adres Defteri: Liste Kaynaklar ve Hesaplar

, ben seçenekleri

  • Tüm Kişiler
  • MobileMe
    • Tüm MobileMe
    • Şirket
    • olsun Aile
    • Arkadaş
    • ...
  • ACME Değişim
    • ACME Exchange Genel Adres Listesi
  • Testi CardDAV'yi
    • Adres
    • Arama

Ben

  • İsimsiz için kaynak kayıtlarını almak işlevini ABAddressBookCopyArrayOfAllSources kullanmak; türü: kABSourceTypeMobileMe
  • Adsız; türü: kABSourceTypeExchangeGAL
  • "Adres defteri"; türü: kABSourceTypeCardDAV
  • "Ara"; Türü: kABSourceTypeCardDAVSearch

isimler hiçbir şekilde açıklayıcı ve İletişim uygulaması yaptığı gibi, kaynak adı veya türüne ek olarak hesap adları göstermek istiyorum.

Bir kaynağın hesap adını bulmak veya mevcut hesap adlarını ve her bir hesabın kaynaklarını almak için bir yol biliyor musunuz? Daha açıklayıcı girişler almak için başka fikirler var mı? Bu yardımcı olabilir

+0

Hesap adlarını nasıl listeleyeceğinizi öğrendiniz mi? Örneğin, örneğinizde: ACME Exchange veya Test CardDAV –

cevap

0

:

Obtaining Specific ABSource from ABAddressBook in iOS 4+

iOS 4 ve üzeri bir ABAddressBook belirli bir ABSource seçmenize olanak sağlar yeni API sağlar. Bu, bazı işlemler gibi yararlı olabilir, örn. Bir ABGroup oluşturmak, bazı kaynaklarda (diğer bir deyişle Exchange) desteklenmez.

"Tüm kaynak türleri grupları desteklemez, daha belirgin olarak, Exchange gruplar hakkında hiçbir şey bilmiyor."- http://flavors.me/volonbolon#1a5/tumblr

Bu fonksiyonlar o Kaldıraçtan ne sonra konum olarak görünüyor ABGroupCreateInSource() çağrıları kullanılabilir belirli türleri, kaynakları elde etmek için yeni API nasıl kullanılabileceğini göstermektedir itibariyle

4

. iOS 5.1 bunun için hiçbir kamu API yoktur

bir ABRecordCopyCompositeName() ne sonra alacağı umut ediyorum -. o Kişi ve Grup kayıtları için "insan dostu" adını sağlar -. ama null döndürür yazık

Graham'ın işaret ettiği gibi (bir ödül verirken) doğrudan kABSourceNameProperty için sking yanlış cevap veriyor.

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef sources = ABAddressBookCopyArrayOfAllSources(addressBook); 

CFIndex i, c = CFArrayGetCount(sources); 
ABRecordRef curSource; 

// Log each source name. 
for (i=0; i<c; i++) { 
    curSource = CFArrayGetValueAtIndex(sources, i); 
    NSString *name = (__bridge_transfer NSString *)ABRecordCopyCompositeName(curSource); 
    NSLog(@"Alas this is null: %@", name); 


    NSString *directValue = (__bridge_transfer NSString *)ABRecordCopyValue(curSource,kABSourceNameProperty); 
    NSLog(@"And direct access gives wrong answer: %@", directValue); 

} 

CFRelease(sources); 
CFRelease(addressBook); 

Ben önerebilirsiniz Tüm ABRecordCopyCompositeName() kendisi hepimizden mevcut kullanıyor olursa olsun hizmet İletişim yapmaya yapılmasını sormak için bir Radar dosyalama.

+0

Bunun için, ne yazık ki 'ABRecordCopyCompositeName()' nin belgelerine "Bu işlevin davranışı, kaynak kayıtları için tanımlanmamıştır." Bu yüzden çalışmayı beklemiyordum :-( –

+0

Evet, işte bu yüzden işe yaramıyor. :-) –