私は(奇妙な)問題に直面しています。連絡先の電話番号の番号を取得したいのですが、何らかの理由で私はできません。kABPersonPhonePropertyを読むことができません
私は、すべての連絡先の配列を取得するために
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *contacts = (NSArray*) ABAddressBookCopyArrayOfAllPeople(addressBook);
CFRelease(addressBook);
を使用。例えば、名前を抽出する
CFStringRef name = ABRecordCopyCompositeName([contacts objectAtIndex:i]);
を使用して正常に動作します:そして、私はいつも私が連絡先に関するその他の情報を取得することができるよ
nil
...
お知らせを返し
ABMultiValueRef ref = ABRecordCopyValue([contacts objectAtIndex:i], kABPersonPhoneProperty);
NSLog(@"%d",ref==NULL);
が、ABRecordCopyValue
を使用したいです
私が間違っていることを誰かに説明してもらえますか?
ABRecordCopyValue([contacts objectAtIndex:i], kABPersonPhoneProperty);
を使用して、私は
ABRecordID idRec = ABRecordGetRecordID([contacts objectAtIndex:i]);
ABMultiValueRef ref = ABRecordCopyValue(ABAddressBookGetPersonWithRecordID(addressBook, idRec), kABPersonPhoneProperty);
を使用しましたしかし、私はaddressBook
(それを解放しないでください)への参照を有効に保たなければならなかったので、EricSによって示唆された解決策が良いようです。
これはうまくいくはずです。 'kABPersonEmailProperty'のような別の多値を試してみてください。あなたがテストしたすべての人に電話番号がないことがありますか?また、何も提案していないので、 'NULL == ref'と書くことをお勧めします。誤って等号を残しても、エラーは発生せず、誤解を招く結果になります。 :) – matt
何も変更されていません。私のアドレス帳には2つのテスト連絡先しかありません。最初の電話番号は2つの電子メールと1つの電子メールですが、2番目の番号は1つの電話番号と電子メールはありません。どちらの場合も、それは何も返しません... – Saphrosit
これを解決しましたか? – matt