iOS 7 Addressbook 和 NSMutableArray 与 UITableView 获取名称和号码

Posted

技术标签:

【中文标题】iOS 7 Addressbook 和 NSMutableArray 与 UITableView 获取名称和号码【英文标题】:iOS 7 Addressbook and NSMutableArray with UITableView getting name and number 【发布时间】:2014-01-18 23:37:47 【问题描述】:

我有一个 NSMutable 数组和一个 UITableview,可以从通讯录中添加数字。只需添加和删除数字就可以了。我创建了一个自定义表格单元格,其想法是同时显示联系人姓名和号码。再次,我可以在上面显示一个数字。

我不确定如何将联系人姓名也添加到 NSMutable 数组中,(我不确定它是否可能 - 来自谷歌搜索)

要选择我的联系人,我使用 Apples 开发指南 Link 中的代码 sn-p

请有人指出我正确的方向吗?示例或教程。

【问题讨论】:

您将电话号码放在数组中,但无法将姓名放入数组中? 是的,我有一个数组中的电话号码。我想知道是否可以将联系人姓名添加到同一个数组中,还是必须创建一个新数组/做其他事情? 【参考方案1】:

因为您能够获得电话号码,所以我假设您已经知道如何获得对 ABRecordRefs 的引用。要获取 ABRecordRef 的全名,您必须使用此方法:

ABRecordCopyCompositeName( recordRef );

这会返回一个 CFStringRef,可以将其 __bridgeed 到 NSString 以在表格视图中使用。

【讨论】:

感谢您的回复。一旦我有了名字和号码,我可以将它们都添加到我的 NSMutableArray 中吗?我想在表格的单元格中显示两者 你可以做的是有一个数组数组。喜欢@[ @[@"Full Name", @"PhoneNum"]];【参考方案2】:

我尝试添加另一个 NSMutableArray,但在选择时遇到了“null”联系人错误。

经过一番摸索和谷歌搜索后没有可靠的答案,我编辑了一个联系人,发现我的一些联系人只有姓氏,有些只有第一个 - 我的联系人是从 android 设备和 Windows Phone 导入的。我在 Iphone 上创建的联系人运行良好。

我想出了这个代码来解决这个问题,将名字和姓氏字符串一起添加。如果一个是空的,我会添加一个空白。

NSString* firstname = (__bridge_transfer NSString*)ABRecordCopyValue(person,
                                                                    kABPersonFirstNameProperty);


NSString* lastname = (__bridge_transfer NSString*)ABRecordCopyValue(person,
                                                                kABPersonLastNameProperty);

NSString* name;


if (firstname == Nil) 
    firstname = @"";


if (lastname == Nil) 
    lastname = @"";


name = [NSString stringWithFormat:@"%@ %@", firstname, lastname];

我确实希望“ABRecordCopyCompositeName”提供一个友好的名称,但对我来说仍然返回 null。

【讨论】:

以上是关于iOS 7 Addressbook 和 NSMutableArray 与 UITableView 获取名称和号码的主要内容,如果未能解决你的问题,请参考以下文章

iOS AddressBook - 获取联系人图片崩溃

利用AddressBook.framework框架获取iOS系统通讯录数据

IOS AddressBook Contacts真实设备上的Null问题

使用 AddressBook 框架时,iOS 11 上的应用程序崩溃?

使用 iOS Addressbook api 搜索交换联系人

iOS开发之系统通讯录