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值的函数的结果(例如ABGroupAddMember
或ABAddressBookSave
或NSArray
或NSDictionary
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不添加成员,它应该返回一个错误。