地址簿iOS:从string联系人姓名

我试图自动添加联系人到我的应用程序的iOS通讯簿,其中联系人的名称是从NSString。 我试图找出(见代码下),但它没有工作。 它工作添加我提供的第一个代码(我有保存代码和东西)的联系人,但我想添加联系人string,可能会有所不同,不只是一个名字,不能。

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); 

你在做什么是好的,但你忘记了调用ABAddressBookAddRecordABAddressBookSave 。 除非你这样做,否则什么都不会发生 你得到的是一个漂浮在空中的人。 如果你希望它成为地址簿的一部分,你必须把这个人放到地址簿里。

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

 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);