【发布时间】:2014-01-06 03:15:44
【问题描述】:
我的应用程序与 iOS 的 Addressbook 框架相关联,我正在获取联系信息。
- 名字
- 姓氏
- 公司名称
- 家庭邮箱
- 工作邮箱
- 家庭电话
- 工作电话
- 手机
我需要扩展我正在获取的信息。 我在应用程序中遇到的问题是将联系人导入应用程序的用户数据库中。发生这种情况时,如果我有多个家庭电子邮件(或任何其他电子邮件/电话字段),则它会导入两个用户。
这是我的 Person 模型
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
@interface Person : NSObject
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSString *fullName;
@property (nonatomic, strong) NSString *homeEmail;
@property (nonatomic, strong) NSString *workEmail;
@property (nonatomic, strong) NSString *companyName;
@property (nonatomic, strong) NSString *homePhone;
@property (nonatomic, strong) NSString *workPhone;
@property (nonatomic, strong) NSString *cellPhone;
@property (nonatomic, strong) NSString *sortByName; // Used only for sorting
@property (nonatomic) ABRecordID publicContactRecordId;
@property (nonatomic) NSString *parseObjectId;
- (NSComparisonResult)compareFirstName:(Person *)otherObject;
@end
我想也许我应该将它们作为字典或数组?问题是现在,显然我不能拥有多个家庭电子邮件和任何其他字段。
这可能会提供更多见解, 我在省钱
编辑:
这是我从地址簿 api 中检索电子邮件和电话号码的方法。
//email
ABMultiValueRef emails = ABRecordCopyValue(contactPerson,
kABPersonEmailProperty);
NSUInteger j = 0;
for (j = 0; j < ABMultiValueGetCount(emails); j++){
NSString *email = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emails, j);
if (j == 0){
if(email){
person.homeEmail = email;
}
}
else if (j==1){
if(email){
person.workEmail = email;
}
}
}
ABMultiValueRef numbers = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);
for (CFIndex i = 0; i < ABMultiValueGetCount(numbers); i++) {
NSString *phoneLabel = (__bridge NSString *)ABMultiValueCopyLabelAtIndex(numbers, i);
NSString *phoneNumber = (__bridge NSString *)ABMultiValueCopyValueAtIndex(numbers, i);
//NSLog(@"%@ | %@",phoneLabel,phoneNumber);
if([phoneLabel isEqualToString:@"Home Phone"])
{
person.homePhone = phoneNumber;
}else if([phoneLabel isEqualToString:@"Work Phone"])
{
person.workPhone = phoneNumber;
}else if([phoneLabel isEqualToString:@"Cell Phone"])
{
person.cellPhone = phoneNumber;
}
}
【问题讨论】:
-
这并不是您问题的真正答案,但它可能会有所帮助。通讯簿的 Objective-C 包装器。 github.com/erica/ABContactHelper
标签: ios objective-c parse-platform abaddressbook