Tag: 地址簿

从AddressBook iPhone获取特定联系人的小组

我在我的地址簿中获取特定联系人的组名,但是如果联系人C1来自组G1,则下面的代码返回错误的组名,例如代码给我组G2。 谁能告诉我我在这里做错了什么? *码 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); NSInteger recordId; ABRecordRef recordGroupID; for( int i=0;i< nPeople;i++) { NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; @try { NSAutoreleasePool *Pool = [[NSAutoreleasePool alloc] init]; ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i); recordId = ABRecordGetRecordID(ref); recordGroupID = ABAddressBookGetGroupWithRecordID(addressBook, recordId); NSString *grpName; if(recordGroupID) grpName = […]

ABGroupAddMember在iOS4设备上不起作用

下面的代码在Simulator(iOS 4和iOS 5)中很好用,但在iOS 4设备上没有任何联系。 没有错误返回。 你知道为什么吗? ABAddressBookRef ab = ABAddressBookCreate(); abGroupRef = ABAddressBookGetGroupWithRecordID(ab, 1); ABRecordRef pRef = ABAddressBookGetPersonWithRecordID(ab, 1); ABGroupAddMember(abGroupRef, pRef, &anError); ABAddressBookSave(ab, &anError); 谢谢, – 约瑟夫

AddressBook:区分kABSourceTypeExchangeGALtypes的来源

我问的问题已经问了很多次在这个网站(链接到前面的线程在我的问题下面)。 使用iOS AddressBook并尝试获取Exchange GAL通讯簿时,types名称返回Nil。 我使用的代码(并在以前的所有线程中build议)是: CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(source, kABSourceNameProperty); 这基本上意味着,如果在设备上映射了多个Exchange地址簿(并且没有限制这么做),那么就无法知道哪一个是您需要的。 问题是如果有人发现这个问题的解决方法? 提前致谢! 前几个主题的链接: ABAddressBook ABSource和ABSourceType iPhone:你如何获得iPhone上所有地址簿的名字? ABSource名称返回nil AddressBook:如何获取不同Exchange源的名称 阅读ABSource的名称

为什么需要为每个线程创buildABAddressbookRef?

苹果说: 重要:ABAddressBookRef的实例不能被多个线程使用。 每个线程都必须创build自己的实例。 但为什么? 我知道一些特定的类或操作必须在主线程中完成。 而且我知道一些对象不是线程安全的(这意味着如果这些对象被两个不同的线程同时访问,将会导致问题)。 但是,如果您可以确保线程不安全的对象在任何时候只被一个线程访问,那么应该没有问题。 我到目前为止是否理解正确? 我不明白的是,为什么会像ABAddressbookRef这样的对象需要为每个线程创build? 为什么苹果会这样说呢? 如果只是线程不安全,苹果可能会说这是线程不安全的,处理时要小心。 但为什么需要为每个线程创build一个? 有什么理由我不知道吗? ABAddressbookRef的实现是否依赖于创build它的线程? PS:我记得核心数据还说,需要为每个使用它的线程创buildManagedObjectContext。

在联系人保存联系人之前如何查看是否添加组织名称?

我正在研究AddressBook项目,我的要求之一是在使用我的应用程序手动添加新联系人时,应检查“组织字段”值是否由用户input。 我在导航栏上用下面的代码片段添加(+)button: UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)]; self.navigationItem.rightBarButtonItem = addButton; 当前的模式视图出现在单击此添加button时,通过本机地址簿; -(void)add:(id)sender { ABNewPersonViewController *view = [[ABNewPersonViewController alloc] init]; view.newPersonViewDelegate = self; UINavigationController *newNavigationController = [[UINavigationController alloc] initWithRootViewController:view]; [self presentModalViewController:newNavigationController animated:YES]; } – (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person { newPersonView.displayedPerson = person; [self dismissModalViewControllerAnimated:YES]; [table reloadData]; } 联系人保存到我的地址之前书我想检查用户是否已经添加“组织字段”或不。 如果是空白/无,我想显示一个提示框要求填写组织的价值。 这是强制性的,一旦用户提供组织价值,然后联系人将被保存到AddressBook。 编辑:正如下面的法比奥build议,我更新了我的代码.. – (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person{ […]

iOS无法获取人物形象

我有两个tableViewControllers。 第一个有一个联系人列表。 另一个显示详细的人的信息。 第一个tableViewController的代码块 ABAddressBookRef addressBook = ABAddressBookCreate(); ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook); NSArray *allPeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source,kABPersonSortByFirstName); for ( int i = 0; i < [allPeople count]; i++ ) { … contactClass = [[ContactClass alloc] initWithName:name surName:surName manID:[allPeople objectAtIndex:i]]; … } 第二个tableViewController的代码块 ABRecordRef person = (__bridge ABRecordRef)contactClass.manID; BOOL isHasImage = ABPersonHasImageData(person); variablesisHasImage始终为false,即使联系人具有化身。 我甚至检查了第一个tableViewController,如果人有一个头像,那么它返回true和image。 有谁知道我为什么无法获取联系人图片? […]

在iOS上的地址簿中获取图像联系人

我是新的使用通讯簿,我会尝试获取手机中的联系人的一些信息。 是否有可能获得所有联系人的图像联系人? 这将适用于iOS4或更高版本。 提前致谢!

iOS7 – ABPersonViewController,编辑模式

苹果公司提供了一个很好的综合和小例子,“QuickContacts”( developer.apple.com/library/IOs/samplecode/QuickContacts/Introduction/Intro.html ),概述了地址簿UI框架的基本用法。 – 可下载的源代码的工作方式如下(一旦将一个名为“Appleseed”的人员添加到您的地址簿中,或将第246行(QuickContactsViewController.m)中的人员名称更改为您的地址簿中已存在的人员)。 问题:我们如何修改函数-(void)showPersonViewController函数,使得ABPersonViewController "picker" -(void)showPersonViewController ABPersonViewController "picker"已经处于编辑模式(带有可见的“完成”editingButton),当它被打开时(被推入到navigationController堆栈)。 在“7”之前的iOS版本中,插入如picker.editing = YES;是一个直接的问题picker.editing = YES; 在将拾取器推入导航堆栈之前,为了以编辑模式查看它,一旦打开(见下面的代码)。 在iOS7中,这不起作用了。 这是在iOS7中的错误,如果是这样,是否有一个简单的解决方法(而不是如反向工程的ABPersonViewController类)? – 还是需要以不同的方式进行编码? 期待您的意见。 -(void)showPersonViewController { // Search for the person named "Appleseed" in the address book NSArray *people = (NSArray *)CFBridgingRelease(ABAddressBookCopyPeopleWithName(self.addressBook, CFSTR("Appleseed"))); // Display "Appleseed" information if found in the address book if ((people != nil) && […]

iPhone地址簿电话号码

我正在做一个需要电话簿访问的Xcode的iPhone应用程序。 我需要通讯录中的所有电话号码,并且应该存储在NSArray 。

如何简单地检索iOS7中的联系人列表?

我需要在iOS检索Contacts列表。 这是我的代码,不工作。 NSMutableArray *myContacts = [[NSMutableArray alloc]init]; CFErrorRef error = NULL; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); if (addressBook!=nil) { NSArray *allContacts = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); NSUInteger i = 0; for (i = 0; i<[allContacts count]; i++) { Person *person = [[Person alloc] init]; ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i]; NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty); person.firstName = […]