2011-12-15 20 views
2

コードはSimulator(iOS 4と5の両方)でうまく動作しますが、iOS 4デバイスには接触がありません。エラーは返されません。理由は何ですか?iOS4デバイスでABGroupAddMemberが動作しない

ABAddressBookRef ab = ABAddressBookCreate(); 
abGroupRef = ABAddressBookGetGroupWithRecordID(ab, 1); 
ABRecordRef pRef = ABAddressBookGetPersonWithRecordID(ab, 1); 
ABGroupAddMember(abGroupRef, pRef, &anError); 
ABAddressBookSave(ab, &anError); 

おかげで、 --Josef

+0

* * 'ABGroupAddMember'と' AbAddressBookSave'の両方が、その関数が成功した場合、YESのBOOL値を返します。そのうちの1人が「NO」を返す可能性があります。その場合、そのエラーを確認できます。 –

+0

私は戻り値をチェックしないのは本当ですが、私は常に上記のコードにないanErrorをチェックします。 anErrorは常にNULLなので、エラーは発生していないと仮定します。それは良い仮定ですか? ABGroupAddMemberがNOを返したことを知っていても、anErrorがNULLの場合、私は何を知っていますか?あなたの助けをありがとう! –

答えて

1

問題は連絡先が交換によって同期グーグルからのものであったということでした。ローカルグループのみが存在し、ローカルグループはローカルの連絡先のみを保持することができます。これはちょっと公正ですが、ABGroupAddMemberはメンバーを追加しない場合はエラーを返します。

+0

こんにちはdevZone.touchDude.com見つかり何ソリューションiPhoneデバイス 上のワーキンググループに連絡先を追加し、同じ問題 に直面しています同じ問題グループに連絡先を追加すると、シミュレータではプロンプトが動作しますが、iPhoneデバイスでは表示されませんどのようなsolutioあなたがこの問題のために見つけたn Plzz Share –

+0

私のケースでは、ルートケースがExchangeの同期された連絡先を使用していました。これらはグループを使用しないかもしれません(少なくともこれをする時はできませんでした)。だから、私はグループに頼るのを止め、自分自身を実装しました - >本当にあなたのための修正ではありませんよね? –

+0

ヘルプdevZone.touchDude.comありがとう –

1

それは常にBOOL値を返す関数の結果をチェックするのが良いのObjective Cプログラミングの練習です(のようなABGroupAddMemberABAddressBookSaveまたはNSArrayまたはNSDictionarywriteToFile方法) の前に、がパラメータの1つとしてエラーが返されているかどうかを確認します。

ではなく、このような何かを試してみてください:

ABAddressBookRef ab = ABAddressBookCreate(); 
ABRecordRef abGroupRef = ABAddressBookGetGroupWithRecordID(ab, 1); 
ABRecordRef pRef = ABAddressBookGetPersonWithRecordID(ab, 1); 
CFErrorRef anError = NULL; 
NSError * anErrorAsObjectiveCObject; // for use with toll free bridged object magic 

if(ABGroupAddMember(abGroupRef, pRef, &anError)) 
{ 
    if(ABAddressBookSave(ab, &anError)) 
    { 
     NSLog(@"successfully saved"); 
    } else { 
     anErrorAsObjectiveCObject = (__bridge_transfer NSError *) anError; 
     NSLog(@"error in ABAddressBookSave - %@ %@", [anErrorAsObjectiveCObject domain], [anErrorAsObjectiveCObject localizedDescription]); 
    } 
} else { 
    anErrorAsObjectiveCObject = (__bridge_transfer NSError *) anError; 
    NSLog(@"error in ABGroupAddMember - %@ %@", [anErrorAsObjectiveCObject domain], [anErrorAsObjectiveCObject localizedDescription]); 
} 
+0

これまでのコメントで書いたように、私はこれをしますが、エラーはnullです。あなたのコードは、この「ABGroupAddMemberのエラー - (null)(null)」を返します。だから私はそれが動作しないことを知って、私はちょうど理由を知りません:-( –

+0

'abGroupRef'または' pRef'彼らは 'ABGroupAddMember'関数に入るときnullではない? –

+0

両方nullではない:abGroupRef: pRef:この非常に同じコードは、魅力のようなシミュレータで動作します –

関連する問題