ABGroupAddMember在iOS4设备上不起作用

下面的代码在Simulator(iOS 4和iOS 5)中很好用,但在iOS 4设备上没有任何联系。 没有错误返回。 你知道为什么吗?

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

谢谢, – 约瑟夫

好的Objective C编程习惯是检查返回的参数是否有错误之前 ,始终检查返回BOOL值的函数的结果(例如ABGroupAddMemberABAddressBookSaveNSArrayNSDictionary writeToFile方法)。

尝试这样的事情,而不是:

 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不添加成员,它应该返回一个错误。