2017-02-13 8 views
0

を経由して、アドレス帳へのアクセス:私はアドレス帳にアクセスしようとしているABAddressBookCreate

var addressBook = ABAddressBookCreate() as! ABAddressBook! 
if addressBook == nil { 
    print("addressBook not available") 
    return 
} 
var allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook) 
var noOfPeople = ABAddressBookGetPersonCount(addressBook) 

をしかし、私のコードは、常にエラーなし

VAR allPeople = ABAddressBookCopyArrayOfAllPeople(アドレス帳)

にクラッシュしますコンソールで。

正しい方法は何ですか?

はあなたに

答えて

0

1ありがとう:あなたはplistの

2にPrivacy - Contacts Usage Descriptionを設定していることを確認してください:あなたがアドレス帳にアクセスしようとすると、あなたが権限を持っている必要があり、ここではサンプルコード

let addressStatus: ABAuthorizationStatus = ABAddressBookGetAuthorizationStatus() 
     if addressStatus == ABAuthorizationStatus.notDetermined { 
      let addressBook: ABAddressBook? = ABAddressBookCreate().takeRetainedValue() 
      if let addressBookRef = addressBook { 
       ABAddressBookRequestAccessWithCompletion(addressBookRef, { (granted, error) in 
        if granted { 
         //read address book 
        } else { 
         //do something without grant, toast or alert 
        } 
       }) 
      } else { 
       //fail 
      } 
     } else if addressStatus == ABAuthorizationStatus.authorized { 
      //already have the authority 
      let addressBook: ABAddressBook? = ABAddressBookCreate().takeRetainedValue() 
      if let addressBookRef = addressBook { 
       //read address book 
      } else { 
       //fail 
      } 
     } else { 
      //no authority 
     } 
です
関連する問題