The Contacts framework provides Swift and Objective-C API to access and create a new contact. This framework is optimized for thread-safe, read-only usage.
The contact class (CNContact) has a mutable subclass CNMutableContact
for use to modify contact properties like phone numbers, email addresses, an array of CNLabeledValue
objects. CNLabeledValue
contain label and value. Labels describe each value to the user, It allowing differentiation such as home and work for properties and you can create your own custom label using Contact Framework.
Create contact using CNMutableContact
import Contacts
// Contact name prefix
contact.namePrefix = "Mr."
// Contact first name
contact.givenName = "Smith"
// Contact last name
contact.familyName = "Adam"
// Contact profile picture
let imageData = UIImagePNGRepresentation(#imageLiteral(resourceName: "profilePicture"))
contact.imageData = imageData
// Contact Address Details
let postalAddress = CNMutablePostalAddress()
postalAddress.street = "1 Infinite Loop"
postalAddress.city = "Cupertino"
postalAddress.state = "CA"
postalAddress.postalCode = "95014"
contact.postalAddresses = [CNLabeledValue(label:CNLabelWork, value:postalAddress)]
// Contact Phone numbers
contact.phoneNumbers = [CNLabeledValue(
label:CNLabelPhoneNumberiPhone,
value:CNPhoneNumber(stringValue: "(408) XXX-XXXX")), CNLabeledValue(label: CNLabelWork, value: CNPhoneNumber(stringValue: "(407) XXX-XXXX"))]
// Contact Email addresses
let homeEmailAddress = CNLabeledValue(label: CNLabelHome, value: "home@emailaddress.com" as NSString)
let workEmailAddress = CNLabeledValue(label: CNLabelHome, value: "work@emailaddress.com" as NSString)
contact.emailAddresses = [homeEmailAddress, workEmailAddress]
// Contact Birthday
var birthday = DateComponents()
birthday.day = 2
birthday.month = 10
birthday.year = 1991
contact.birthday = birthday
// Saving the newly created contact
let store = CNContactStore()
let saveRequest = CNSaveRequest()
saveRequest.add(contact, toContainerWithIdentifier:nil)
try! store.execute(saveRequest)
Preview