2015-09-19 12 views
8

Trong khung Liên hệ mới nhất cho iOS9, cách truy xuất CNContact có địa chỉ email hợp lệ?Swift iOS9 New Contacts Framework - Cách lấy chỉ CNContact có địa chỉ email hợp lệ?

đang hiện tại:

func getContacts() -> [CNContact] { 
    let contactStore = CNContactStore() 
    let predicate: NSPredicate = NSPredicate(format: "") 
    let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey] 

    do { 
     return try contactStore.unifiedContactsMatchingPredicate(predicate, keysToFetch: keysToFetch) 
    } catch { 
     return [] 
    } 
} 

Trả lời

16

Còn bây giờ (iOS 9.0) có vẻ như không có các vị từ (see CNContact Predicates) có sẵn để lọc địa chỉ liên lạc theo địa chỉ email!

Bạn không thể viết một vị tùy chỉnh để lọc địa chỉ liên lạc, như doc nói: "Lưu ý rằng generic và hợp chất vị không được hỗ trợ bởi hệ khung"

Nhưng tất nhiên bạn có thể làm điều đó "theo cách thủ công", tôi hiển thị cho bạn một ví dụ sử dụng liệt kê nhanh:

let contactStore = CNContactStore() 
fetchRequest.unifyResults = true //True should be the default option 
do { 
    try contactStore.enumerateContactsWithFetchRequest(CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey])) { 
     (contact, cursor) -> Void in 
     if (!contact.emailAddresses.isEmpty){ 
      //Add to your array 
     } 
    } 
} 
catch{ 
    print("Handle the error please") 
} 
+1

tuyệt vời, cảm ơn! –

+0

Làm thế nào bạn sẽ sử dụng điều này với một CNContactPickerViewController? Có thể không? Hoặc bạn sẽ phải tạo bộ điều khiển Chế độ xem mới để chọn liên hệ của mình? –

+0

Bạn có thể xem phương thức: predicateForEnablingContact của CNContactPickerViewController – andreacipriani

Các vấn đề liên quan