【问题标题】:How to display phone numbers and email and names of a user?如何显示电话号码和电子邮件以及用户的姓名?
【发布时间】:2013-03-29 16:50:18
【问题描述】:

这是我尝试过的:

-(void) vDisplayPerson:(ABRecordRef)person
{
    ABPersonViewController *picker = [[ABPersonViewController alloc] init] ;
    picker.personViewDelegate = self;
    picker.displayedPerson = person;
    picker.displayedProperties=@[@(kABPersonPhoneProperty),@(kABPersonEmailProperty),@(kABPersonBirthdayProperty),@(kABPersonOrganizationProperty),@(kABPersonJobTitleProperty),@(kABPersonDepartmentProperty),@(kABPersonNoteProperty),@(kABPersonCreationDateProperty)];
    // Allow users to edit the person’s information
    picker.allowsEditing = YES;
    [self.navigationController pushViewController:picker animated:YES];

}

请注意,我已设置 displayProperties 以包含许多内容。电话。人。生日。然而,只显示姓名和职位。

我想显示人们在联系时使用的相同类型的信息。在 iOs6 中不再可能了吗?

更新:我强烈怀疑问题不在显示中,而是由于某种原因整个人的记录根本不包含电话号码。那是因为我可以编辑联系人,添加电话号码和电话号码将被看到。但是,更新不会传播到“真实”联系人。在我的程序上进行的更新不会传播到真正的联系人。真实联系人的更新信息不会显示在我的程序中。

我正在使用 CFArrayRef refAllPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);

顺便说一下,这是在 iPhone 5.1 模拟器中。

【问题讨论】:

  • 我不想获取电子邮件地址和电话号码。我只想使用 ABPersonViewController 显示它。
  • 我敢打赌这与新的权限系统有关。您需要从 iOS 6.0 开始请求访问联系人数据库,但我不确定它是否适用于这种情况......
  • 在 ios 5.1 模拟器中也不行。
  • 您似乎将更改保存到数据库的 副本 而不是数据库本身。尝试改用ABAddressBookCreate()
  • 我做了,但是地址簿已经发布很久了。如果我想使用同一个数据库而不是复制数据库呢?

标签: ios objective-c abpersonviewcontroller abrecordref


【解决方案1】:

这里的关键是对ABAddressBookCreate结果的引用一定不能被释放。所以我创建了一个属性@property (nonatomic) ABAddressBookRef addressBook;,然后在 dealloc 时才释放它(直到程序结束才会调用它)。

这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多