地址簿iOS:来自字符串的联系人姓名

时间:2014-03-11 17:46:01

标签: ios objective-c addressbook abaddressbooksource

我正在尝试从我的应用中自动添加联系人到iOS地址簿,其中联系人的姓名来自NSString。我试图弄明白(见下面的代码),但它没有用。它可以用我提供的第一个代码添加联系人(我有保存代码和东西),但是我想添加可能不同的字符串联系人,而不仅仅是一个名字,而不是。

ABRecordRef newPerson = ABPersonCreate();
ABRecordSetValue(newPerson, kABPersonFirstNameProperty,@"Davis11", &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, @"Scott", &error);

我也试过这段代码,没有运气:

ABRecordRef newPerson = ABPersonCreate();
ABRecordSetValue(newPerson, kABPersonFirstNameProperty,fName, &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, lName, &error);

1 个答案:

答案 0 :(得分:1)

您正在做的事情很好,但您忘记致电ABAddressBookAddRecordABAddressBookSave。在你这样做之前什么都不会发生。你得到的是一个漂浮在周围的人。如果您希望 成为地址簿的一部分,则必须该人放入地址簿。

另外,请记得做内存管理。这是一个完整的例子(但是示例中省略了错误检查!在现实生活中不要这样做):

CFErrorRef err = nil;
ABAddressBookRef adbk = ABAddressBookCreateWithOptions(nil, &err);
ABRecordRef snidely = ABPersonCreate();
ABRecordSetValue(snidely, kABPersonFirstNameProperty, @"Snidely", nil);
ABRecordSetValue(snidely, kABPersonLastNameProperty, @"Whiplash", nil);
ABAddressBookAddRecord(adbk, snidely, nil);
ABAddressBookSave(adbk, nil);
if (snidely) CFRelease(snidely);
if (adbk) CFRelease(adbk);