それは常にBOOL値を返す関数の結果をチェックするのが良いのObjective Cプログラミングの練習です(のようなABGroupAddMember
やABAddressBookSave
またはNSArray
またはNSDictionary
writeToFile
方法) の前に、がパラメータの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]);
}
* * 'ABGroupAddMember'と' AbAddressBookSave'の両方が、その関数が成功した場合、YESのBOOL値を返します。そのうちの1人が「NO」を返す可能性があります。その場合、そのエラーを確認できます。 –
私は戻り値をチェックしないのは本当ですが、私は常に上記のコードにないanErrorをチェックします。 anErrorは常にNULLなので、エラーは発生していないと仮定します。それは良い仮定ですか? ABGroupAddMemberがNOを返したことを知っていても、anErrorがNULLの場合、私は何を知っていますか?あなたの助けをありがとう! –