iOS
Quadro dei contatti
Ricerca…
Osservazioni
Autorizzazione dell'accesso ai contatti
Importare il framework
veloce
import Contacts
Objective-C
#import <Contacts/Contacts.h>
Controllo accessibilità
veloce
switch CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts){
case .Authorized: //access contacts
case .Denied, .NotDetermined: //request permission
default: break
}
Objective-C
switch ([CNContactStore authorizationStatusForEntityType:CNEntityType.Contacts]){
case CNAuthorizationStatus.Authorized:
//access contacts
break;
case CNAuthorizationStatus.Denied:
//request permission
break;
case CNAuthorizationStatus.NotDetermined:
//request permission
break;
}
Richiesta di autorizzazione
veloce
var contactStore = CKContactStore()
contactStore.requestAccessForEntityType(CKEntityType.Contacts, completionHandler: { (ok, _) -> Void in
if access{
//access contacts
}
}
Accesso ai contatti
Applicazione di un filtro
Per accedere ai contatti, dovremmo applicare un filtro di tipo NSPredicate
alla nostra variabile contactStore che abbiamo definito nell'esempio Autorizzazione Contact Access. Ad esempio, qui vogliamo ordinare i contatti con il nome corrispondente con il nostro:
veloce
let predicate = CNContact.predicateForContactsMatchingName("Some Name")
Objective-C
NSPredicate *predicate = [CNContact predicateForContactsMatchingName:@"Some Name"];
Specifica delle chiavi da recuperare
Qui, vogliamo recuperare il nome, il cognome e l'immagine del profilo del contatto:
veloce
let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactImageDataKey]
Recupero di contatti
veloce
do {
let contacts = try contactStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keys)
} catch let error as NSError {
//...
}
Accesso ai dettagli di contatto
veloce
print(contacts[0].givenName)
print(contacts[1].familyName)
let image = contacts[2].imageData
Aggiungere un contatto
veloce
import Contacts
// Creating a mutable object to add to the contact
let contact = CNMutableContact()
contact.imageData = NSData() // The profile picture as a NSData object
contact.givenName = "John"
contact.familyName = "Appleseed"
let homeEmail = CNLabeledValue(label:CNLabelHome, value:"[email protected]")
let workEmail = CNLabeledValue(label:CNLabelWork, value:"[email protected]")
contact.emailAddresses = [homeEmail, workEmail]
contact.phoneNumbers = [CNLabeledValue(
label:CNLabelPhoneNumberiPhone,
value:CNPhoneNumber(stringValue:"(408) 555-0126"))]
let homeAddress = CNMutablePostalAddress()
homeAddress.street = "1 Infinite Loop"
homeAddress.city = "Cupertino"
homeAddress.state = "CA"
homeAddress.postalCode = "95014"
contact.postalAddresses = [CNLabeledValue(label:CNLabelHome, value:homeAddress)]
let birthday = NSDateComponents()
birthday.day = 1
birthday.month = 4
birthday.year = 1988 // You can omit the year value for a yearless birthday
contact.birthday = birthday
// Saving the newly created contact
let store = CNContactStore()
let saveRequest = CNSaveRequest()
saveRequest.addContact(contact, toContainerWithIdentifier:nil)
try! store.executeSaveRequest(saveRequest)
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow