gpt4 book ai didi

ios - 创建联系人应用程序——我可以做什么来更好地处理电子邮件/电话号码?

转载 作者:行者123 更新时间:2023-11-29 03:22:09 24 4
gpt4 key购买 nike

我的应用程序与 iOS 的地址簿框架相关联,我正在获取联系信息。

  • 名字
  • 姓氏
  • 公司名称
  • 家庭邮箱
  • 工作邮箱
  • 家庭电话
  • 工作电话
  • 手机

我需要扩展我正在获取的信息。我在应用程序中遇到的问题是它将联系人导入到应用程序的用户数据库中。发生这种情况时,如果我有多个家庭电子邮件(或任何其他电子邮件/电话字段),则会导入两个用户。

这是我的人物模型

#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

我想也许我应该将它们作为字典或数组?现在的问题是,显然我不能有超过一个家庭电子邮件和任何其他字段。

这可能会提供更多见解,我在存钱 Parse User Database To Store Device Contacts To

编辑:

下面是我如何从地址簿 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;
}

}

最佳答案

有两种构造方法:

  1. 修改您的 Person 类,使其具有 email 属性,该属性是 NSDictionary 条目的 NSArray —每个字典都有一个地址和一个类型(家庭工作等)。对于电话可以采取类似的方法。

  2. 修改您的 Person 类,以便 homeEmailworkEmailhomePhone workPhoneNSArray 类型,每个类型都包含一个表示电子邮件地址和电话号码的字符串数组。

对于这两种选项,您都需要在数据库中使用两个额外的表 - 一个用于电子邮件地址,一个用于电话号码。它们的结构非常基本:userid(来自 users 表)、type(家庭、工作等)和一个 电子邮件地址电话号码 列。

关于ios - 创建联系人应用程序——我可以做什么来更好地处理电子邮件/电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com