我在访问iPad 2的通讯簿时遇到问题。特别是在检索联系人的电子邮件时遇到问题。我要做的是访问通讯录,检索我的联系人并在表格视图中显示它们。由于显示了联系人的姓名和姓氏,所以一切正常。问题在于电子邮件属性,因为当我尝试对其进行检索时,会收到“ EXC_BAD_ACCESS”。
我编写的用于显示tableview记录的代码如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *tableIdentifier = @"tableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:tableIdentifier] autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
NSUInteger row = [indexPath row];
NSString *firstName = (NSString *)ABRecordCopyValue([contacts objectAtIndex:row], kABPersonFirstNameProperty);
NSString *lastName = (NSString *)ABRecordCopyValue([contacts objectAtIndex:row], kABPersonLastNameProperty);
NSString *name = [[NSString alloc] initWithFormat:@"%@ %@", lastName,firstName];
[firstName release];
[lastName release];
cell.textLabel.text = name;
[name release];
NSArray *emails = [[self getEmailForPerson:row] retain];
/*......*/
return cell;
}
获取联系人电子邮件的功能如下:
- (NSArray *)getEmailForPerson:(NSInteger)index{
//Create the array where emails will be stored
NSMutableArray *m = [[[NSMutableArray alloc] init] autorelease];
//Get the email properties
ABMultiValueRef mails = ABRecordCopyValue([self.contacts objectAtIndex:index], kABPersonEmailProperty);
//Iterate in the multi-value properties
for (int i=0; i<ABMultiValueGetCount(mails); i++) {
//Get the email
NSString *mail = (NSString *) ABMultiValueCopyValueAtIndex(mails, i);
//Add the email to the array previously initializated
[m addObject:mail];
[mail release];
}
CFRelease(mails);
return m;
}
当我在此语句后运行调试器时
ABMultiValueRef mails = ABRecordCopyValue([self.contacts objectAtIndex:index], kABPersonEmailProperty);
邮件似乎未初始化,因为其地址为0x0,但我不明白为什么。
我希望有人能帮助我。
提前致谢
最佳答案
ABMultiValueRef mails = ABRecordCopyValue([self.contacts objectAtIndex:index], kABPersonEmailProperty);
它在我的应用程序中工作正常。
检查框架和self.contacts。
我的应用程序使用两个框架。
#import <AddressBook/AddressBook.h>
#import <AddressBook/ABAddressBook.h>
关于iphone - iOS上ABMultiValueRef的通讯簿错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7041170/