iOS 4+のABAddressBookから特定のABSourceを取得する方法の例はありますか?iOS 4+のABAddressBookから特定のABSourceを取得
答えて
iOS 4+は、ABAddressBookから特定のABSourceを選択できるようにする新しいAPIを提供します。これは、いくつかの操作として有用である可能性があります。 ABGroupの作成は、一部のソース(Exchangeなど)ではサポートされていません。
"すべてのソースタイプがグループをサポートしているわけではありません。より顕著なことに、Exchangeはグループについて何も知らない" - http://flavors.me/volonbolon#1a5/tumblr
添付された関数は、新しいAPIを利用してABGroupCreateInSource()の呼び出しで使用される特定の型のソースを取得する関数です。
#define CFRELEASE_AND_NIL(x) CFRelease(x); x=nil;
ABRecordRef sourceWithType (ABSourceType mySourceType)
{
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sources = ABAddressBookCopyArrayOfAllSources(addressBook);
CFIndex sourceCount = CFArrayGetCount(sources);
ABRecordRef resultSource = NULL;
for (CFIndex i = 0 ; i < sourceCount; i++) {
ABRecordRef currentSource = CFArrayGetValueAtIndex(sources, i);
CFTypeRef sourceType = ABRecordCopyValue(currentSource, kABSourceTypeProperty);
BOOL isMatch = mySourceType == [(NSNumber *)sourceType intValue];
CFRELEASE_AND_NIL(sourceType);
if (isMatch) {
resultSource = currentSource;
break;
}
}
CFRELEASE_AND_NIL(addressBook);
CFRELEASE_AND_NIL(sources);
return resultSource;
}
ABRecordRef localSource()
{
return sourceWithType(kABSourceTypeLocal);
}
ABRecordRef exchangeSource()
{
return sourceWithType(kABSourceTypeExchange);
}
ABRecordRef mobileMeSource()
{
return sourceWithType(kABSourceTypeMobileMe);
}
Xyzzycoder-
あなたのソリューションは、localSourceがすでに存在する場合にうまく動作しますが、1が存在しない場合は、単にNULLを返します。
たとえば、localSourceのABRecordRefを作成する方法はありますか?私は私の連絡先を非同期ソースに保存できる必要があります。
乾杯
ピーター、どのような状況ではローカルソースはありませんか? – xyzzycoder
こんにちは。たとえば、連絡先アプリケーションの[グループ]ページに表示されているローカルアドレス帳はありません(通常、「自分のパソコンに「すべて」、「自分のPCにすべて」」または「Macですべて」と表示されます)どちらも、あなたが提案した方法を使ってハンドルを取得することはできません。私のテストでは、ユーザーが自分のデバイスに格納されている連絡先がExchangeには保存されていない場合(たとえば、Exchangeをセットアップする前に入力していて、マージしないことを選択した場合) 。乾杯、 –
ピーター、それは面白いです。私は(明らかに間違って)ローカルアドレス帳は常にデバイス上に存在すると仮定していたと思います。ローカルソースをプログラムで作成していない場合は、それが存在しない場合もあります。 – xyzzycoder
本当にしたいExchangeはデフォルトのソースレコードを編集するが、独自のものを作成する必要がいけない、と何最も素晴らしいのですがアドレス帳意志であり、これを使用して作成グループのように自分自身のsource.Justを作成する方法を知っていますそれらを自動的にリンクします。
ジャッキー、ローカルソースを作成する方法を知っていると言っていますか? – xyzzycoder
私はwish.Actually ABSourceCreate();である私自身のソースを作成することができるプライベートAPIを発見しました。それはクラッシュせず、Log.Iの "ABStore"タイプとして印刷されるABRecordRefを返すそれは私が希望するABSourceタイプだと思う。私はkABSourceNameProperty、kABSourceTypePropertyを設定し、それをaddressBook.Butに追加するためにABAddressAddRecord()私はプロセスで何かを見逃したように最後に失敗しました.Appleは、次のアップデートでもう少し詳細をリリースするでしょう:誰でも知っています:) –
アドレス帳はまだ私に黒い魔法のように感じます。 – xyzzycoder
コードにエラーがあります。つまり、メソッド:ABRecordGetRecordTypeがABSourceの一部ではないため、常に2が返されます。
人物レコードのkABPersonType グループレコードのkABGroupType。 ソースレコードのkABSourceType。
正しいタイプを理解するには、ABRecordCopyValue(source、kABSourceTypeProperty)を代わりに使用してください。 :)私のiPhoneでlocalSourceの有無にかかわらず優れた動作をします。
幸運を祈る!
既存のlocalSourceなしでは動作しません – hinderberg
@hinderberg - あなたが提案しているものを組み込むようにコードを修正できますか?または、ローカルソースがまだ存在しない場合は、このアプローチは機能しないと言っていますか? – xyzzycoder
私は、この方法は、ローカルソースが存在しない場合は機能しないと言っています。現在この問題についてAppleからの回答を待っています! – hinderberg
- 1. iOS:特定のユーザーからの最新のツイートテキストを取得
- 2. データベースから特定のデータを取得
- 3. JSONから特定の値を取得
- 4. スパークデータフレームから特定の行を取得
- 5. SwiftのJSON中文字列から特定の値を取得4
- 6. 美味しいスープ4:クラスから特定の属性を取得する
- 7. スウィフトコアデータ特定の日付からの結果を取得する
- 8. リゾルバデータから特定のインデックスから情報を取得する
- 9. 特定のパラメータを持つリストから特定のオブジェクトを取得
- 10. SSRS:DataSetの特定の行から値を取得しますか?
- 11. 特定のドメインのウェブビューからCookieを取得しますか?
- 12. オブジェクトのC#から特定のオブジェクトの値を取得
- 13. mongoDBから特定のキーのすべての値を取得
- 14. 複数のリストから特定のdictのプロパティ値を取得
- 15. djangoから特定のデータを取得できませんか?
- 16. JavaはRuntimeから特定の行を取得しますか?
- 17. 特定のUISegmentedControlインデックスからフレームを取得しますか?
- 18. URLから特定のページを取得し、AJAXでデータを取得する
- 19. 特定の単語の定義を取得するためのIOSディクテーション
- 20. C#のテキストファイルから特定の行を取得するには?
- 21. Android - グリッドビューの特定の要素から文字列を取得
- 22. テーブルから特定のセルの内容を取得する
- 23. S3バケットから特定のバージョンのファイルを取得
- 24. 特定のタイプの親コンテナから子を取得する
- 25. C#のMySQL DBから特定の値を取得する
- 26. カスタムクラスから特定のタイプのプロパティを取得する
- 27. パンダのデータフレームから特定のデータを取得
- 28. Excel(ACE OLEDB)から特定の列のみを取得する
- 29. Wordpressのメディアライブラリから特定のイメージを取得する
- 30. PHP配列から特定の値の数を取得
読者は、すべてのデバイスにローカルソース(以下のコメントを参照)があるわけではないので、要求されたソースが存在しないケースを処理できる必要があることに注意してください。プログラムでローカルソースを作成することもできないようです。 – xyzzycoder
コピーした値を解放するのはどうですか?私は見ない何らかの理由でこれは不要ですか? –
Martin - 良いキャッチ。漏れは今修正する必要があります。 – xyzzycoder