iOS 9でContacts Frameworkを使用してすべての連絡先レコードを取得する方法
2023-09-06 22:26:28
質問
iOS 9 では、AddressBook フレームワークのほとんどの部分が非推奨になりました。新しい連絡先フレームワークでは
ドキュメント
にマッチするレコードをフェッチする方法だけが示されています。
NSPredicate
にマッチするレコードを取得する方法を示していますが、もし
全て
が必要な場合は?
どのように解決するには?
他の回答はいずれも、コンテナからコンタクトをロードする際に
defaultContainerIdentifier
. ユーザーが複数のコンテナを持っている場合 (たとえば、Exchange と iCloud アカウントが両方とも連絡先の保存に使用されている場合)、デフォルトとして設定されているアカウントから連絡先を読み込むだけです。したがって
すべて
の連絡先を読み込むことはできません。
おそらく代わりに行いたいことは、すべてのコンテナを取得し、それらを反復して、それぞれのコンテナからすべての連絡先を抽出することでしょう。次のコードスニペットは、私たちのアプリの1つでそれを行う方法の例です(Swiftで)。
lazy var contacts: [CNContact] = {
let contactStore = CNContactStore()
let keysToFetch = [
CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),
CNContactEmailAddressesKey,
CNContactPhoneNumbersKey,
CNContactImageDataAvailableKey,
CNContactThumbnailImageDataKey]
// Get all the containers
var allContainers: [CNContainer] = []
do {
allContainers = try contactStore.containersMatchingPredicate(nil)
} catch {
print("Error fetching containers")
}
var results: [CNContact] = []
// Iterate all containers and append their contacts to our results array
for container in allContainers {
let fetchPredicate = CNContact.predicateForContactsInContainerWithIdentifier(container.identifier)
do {
let containerResults = try contactStore.unifiedContactsMatchingPredicate(fetchPredicate, keysToFetch: keysToFetch)
results.appendContentsOf(containerResults)
} catch {
print("Error fetching results for container")
}
}
return results
}()
関連
-
iOS classic error Undefined symbols for architecture XXX:
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み】iOSアプリの名前を変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] 文字列の長さを取得する
-
[解決済み] UIViewに角丸をつける
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み】Swiftで配列から重複する要素を削除する