2

我是 IOS 上的菜鸟,我正在尝试将所有联系人从 iphone(模拟器)传递到一张桌子。我已经按照一些教程进行操作,但出现错误。

你能帮我解决这个问题吗?

我试过了:

#import <AddressBookUI/AddressBookUI.h>
.
.
.
ABAddressBookRef addressBook = ABAddressBookCreate( );
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );

for ( int i = 0; i < nPeople; i++ )
{
    ABRecordRef ref = CFArrayGetValueAtIndex( allPeople, i );
     NSLog(@"%@",ref);
}

我得到这个错误:

Undefined symbols for architecture i386:
  "_ABAddressBookCreate", referenced from:
      -[younifyTableViewController viewDidLoad] in younifyTableViewController.o
  "_ABAddressBookCopyArrayOfAllPeople", referenced from:
      -[younifyTableViewController viewDidLoad] in younifyTableViewController.o
  "_ABAddressBookGetPersonCount", referenced from:
      -[younifyTableViewController viewDidLoad] in younifyTableViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 回答 1

7

您需要将您的项目与 AddressBook 框架链接。在 Xcode 中,导航到您的项目设置(文件浏览器中的顶级项目),转到“Build Phases”选项卡,展开“Link Binary With Libraries”部分,单击“+”图标,选择“<code >AddressBook.framework”,然后单击“确定”。这应该可以解决您的问题。

您看到的错误消息告诉您,在编译您的应用程序时,它找不到列出的符号。这些符号在您导入的地址簿标头中声明,但它们在框架中实现,这就是您需要链接到它的原因。链接过程会填写这些符号。

于 2012-07-11T16:14:30.783 回答