2015-10-28 11 views
14

Ich versuche, den Namen eines Kontakts mit dem neuen CNContactFormatter zu formatieren. Es sieht so aus, dass ich nicht alle benötigten Namenseigenschaften des Kontakts abgeholt habe.Welche Schlüssel benötige ich für CNContactFormatter?

Terminating app due to uncaught exception 'CNPropertyNotFetchedException', reason: 'A property was not requested when contact was fetched.' 

Weiß jemand, welche benötigt werden? Ich habe versucht, die folgenden unter einigen anderen ohne Glück holen:

 CNContactNamePrefixKey, 
     CNContactGivenNameKey, 
     CNContactFamilyNameKey, 
     CNContactMiddleNameKey, 
     CNContactPreviousFamilyNameKey, 
     CNContactNameSuffixKey, 
     CNContactNicknameKey, 
     CNContactPhoneticGivenNameKey, 
     CNContactPhoneticMiddleNameKey, 
     CNContactPhoneticFamilyNameKey, 
     CNContactOrganizationNameKey, 
     CNContactDepartmentNameKey, 
     CNContactJobTitleKey, 

Weder die CNContactFomatter Class Reference noch die fetching method's documentation keine Ahnung geben.

Danke!

Antwort

15

Ich fand das in der WWDC Session 223 (am Schieber 74 ausgehend), und dies für mich gearbeitet, wenn ich das gleiche Problem wurde. Verwenden Sie CNContactFormatter.descriptorForRequiredKeysForStyle ... im Kontaktauswahlaufruf. Beispiel:

let contactStore = CNContactStore() 
let predicate = CNContact.predicateForContactsMatchingName("John") 
let foundContacts = try contactStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName)] 
for contact in foundContacts { 
      print(CNContactFormatter.stringFromContact(contact, style: .FullName)) 
} 
+0

Oh Mann, danke! Das wirkt wie ein Zauber, sogar kombiniert mit einigen zusätzlichen Feldern. – flohei

+0

Link für oben: https://developer.apple.com/videos/play/wwdc2015/223/ – coco