AddressBook

原创 2015年11月17日 20:47:20
在Build Phases的Link Binary With Libraries中加两个框架ContactsUI.framework 和 Contacts.framework

Main.storyboard

#import "ViewController.h"
#import <ContactsUI/CNContactViewController.h>
#import <ContactsUI/CNContactPickerViewController.h>

@interface ViewController ()<CNContactViewControllerDelegate, CNContactPickerDelegate>

- (IBAction)newContact:(UIButton *)sender;
- (IBAction)currentContact:(UIButton *)sender;
//CNContactStore    是一个用来读取和保存联系人的新的类
@property(nonatomic, strong)CNContactStore *contactStore;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//      创建新的联系人
- (IBAction)newContact:(UIButton *)sender {
    [self saveNewContact];
}

- (IBAction)currentContact:(UIButton *)sender {
    [self saveExistContact];
}

//      保存新的联系人
- (void)saveNewContact{

    //      这个对象是用来配置联系人信息的,有可变的CNMutaleContact和CNContact,区别用来读取和创建联系人。CNContact对象中有许多属性,对应联系人的一些信息


    //  1.  创建Contact对象, 必须是可变的
    CNMutableContact *contact = [[CNMutableContact alloc] init];
    //  2.  创建新建好友页面
    CNContactViewController *controller = [CNContactViewController viewControllerForNewContact:contact];

    //  3.  代理内容根据自己需要实现
    controller.delegate = self;
    //  4.  跳转
    UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:controller];

    [self presentViewController:navigation animated:YES completion:^{
        //  5.  为contact赋值
        //      设置联系人头像
        contact.imageData = UIImagePNGRepresentation([UIImage imageNamed:@""]);
        //      设置联系人的昵称
        contact.nickname = @"";
        //      设置联系人名字
        contact.givenName = @"";
        //      设置联系人姓氏
        contact.familyName = @"";
        //      设置联系人邮箱(邮箱信息有多种, 可以任意选择, 点击类查看CNLabeledValue)
        CNLabeledValue *email = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:@""];
        contact.emailAddresses = @[email];
        //      设置联系人电话号(电话信息有多种, 可以任意选择, 点击类查看CNPhoneNumber)
        //      电话号码, 可以通过CNPhoneNumber的+号类方法创建, 或者用初始化方法创建
        contact.phoneNumbers = @[[CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberiPhone value:[CNPhoneNumber phoneNumberWithStringValue:@""]]];
        //      设置联系人地址
        //      点击CNMutablePostalAddress查看设置地址详细信息
        CNMutablePostalAddress *address = [[CNMutablePostalAddress alloc] init];
        address.state = @"中国";
        //      设置生日
        NSDateComponents *birthday = [[NSDateComponents alloc] init];
        contact.birthday = birthday;
        //      创建添加联系人请求CNSaveRequest
        CNSaveRequest *save = [[CNSaveRequest alloc] init];
        //      添加联系人
        [save addContact:contact toContainerWithIdentifier:nil];
        //      写入联系人CNContactStore
        CNContactStore *store = [[CNContactStore alloc] init];
        [store executeSaveRequest:save error:nil];
    }];



/*
        //添加一个联系人
        - (void)addContact:(CNMutableContact *)contact toContainerWithIdentifier:(nullable NSString *)identifier;

        //更新一个联系人
        - (void)updateContact:(CNMutableContact *)contact;
        //删除一个联系人
        - (void)deleteContact:(CNMutableContact *)contact;
        //添加一组联系人
        - (void)addGroup:(CNMutableGroup *)group toContainerWithIdentifier:(nullable NSString *)identifier;
        //更新一组联系人
        - (void)updateGroup:(CNMutableGroup *)group;
        //删除一组联系人
        - (void)deleteGroup:(CNMutableGroup *)group;
        //向组中添加子组
        - (void)addSubgroup:(CNGroup *)subgroup toGroup:(CNGroup *)group NS_AVAILABLE(10_11, NA);
        //在组中删除子组
        - (void)removeSubgroup:(CNGroup *)subgroup fromGroup:(CNGroup *)group NS_AVAILABLE(10_11, NA);
        //向组中添加成员
        - (void)addMember:(CNContact *)contact toGroup:(CNGroup *)group;
        //向组中移除成员
        - (void)removeMember:(CNContact *)contact fromGroup:(CNGroup *)group;

*/
}

- (void)saveExistContact{
    //1.跳转到联系人选择页面,注意这里没有使用UINavigationController
    CNContactPickerViewController *controller = [[CNContactPickerViewController alloc] init];

    controller.delegate = self;

    [self presentViewController:controller animated:YES completion:^{

    }];
}


#pragma mark - CNContactViewControllerDelegate
- (void)contactViewController:(CNContactViewController *)viewController didCompleteWithContact:(nullable CNContact *)contact{
    [viewController dismissViewControllerAnimated:YES completion:^{

    }];
}

#pragma mark - CNContactPickerDelegate
//2.实现点选的代理,其他代理方法根据自己需求实现
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
    [picker dismissViewControllerAnimated:YES completion:^{
        //3.copy一份可写的Contact对象,不要尝试alloc一类,mutableCopy独此一家
        CNMutableContact *c = [contact mutableCopy];
        //4.为contact赋值
        [self setValue4Contact:c existContect:YES];
        //5.跳转到新建联系人页面
        CNContactViewController *controller = [CNContactViewController viewControllerForNewContact:c];
        controller.delegate = self;
        UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:controller];
        [self presentViewController:navigation animated:YES completion:^{
        }];
    }];
}


//设置要保存的contact对象
- (void)setValue4Contact:(CNMutableContact *)contact existContect:(BOOL)exist{
            //      ContactFramework获取格式化的联系人姓名
            NSString *strName = [CNContactFormatter stringFromContact:contact style:CNContactFormatterStyleFullName];
            NSLog(@"%@", strName);

//    if (!exist) {
//        //名字和头像
//        contact.nickname = @"oriccheng";
//        //        UIImage *logo = [UIImage imageNamed:@"..."];
//        //        NSData *dataRef = UIImagePNGRepresentation(logo);
//        //        contact.imageData = dataRef;
//    }
//    //电话,每一个CNLabeledValue都是有讲究的,如何批评,可以在头文件里面查找,这里给出几个常用的,别的我也不愿意去研究
//    CNLabeledValue *phoneNumber = [CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberMobile value:[CNPhoneNumber phoneNumberWithStringValue:@"18888888888"]];
//    if (!exist) {
//        contact.phoneNumbers = @[phoneNumber];
//    }
//    //现有联系人情况
//    else{
//        if ([contact.phoneNumbers count] >0) {
//            NSMutableArray *phoneNumbers = [[NSMutableArray alloc] initWithArray:contact.phoneNumbers];
//            [phoneNumbers addObject:phoneNumber];
//            contact.phoneNumbers = phoneNumbers;
//        }else{
//            contact.phoneNumbers = @[phoneNumber];
//        }
//    }
//    
//    //网址:CNLabeledValue *url = [CNLabeledValue labeledValueWithLabel:@"" value:@""];
//    //邮箱:CNLabeledValue *mail = [CNLabeledValue labeledValueWithLabel:CNLabelWork value:self.poiData4Save.mail];
//    
//    //特别说一个地址,PostalAddress对应的才是地址
//    CNMutablePostalAddress *address = [[CNMutablePostalAddress alloc] init];
//    address.state = @"辽宁省";
//    address.city = @"沈阳市";
//    address.postalCode = @"111111";
//    //外国人好像都不强调区的概念,所以和具体地址拼到一起
//    address.street = @"沈河区惠工街10号";
//    //生成的上面地址的CNLabeledValue,其中可以设置类型CNLabelWork等等
//    CNLabeledValue *addressLabel = [CNLabeledValue labeledValueWithLabel:CNLabelWork value:address];
//    if (!exist) {
//        contact.postalAddresses = @[addressLabel];
//    }else{
//        if ([contact.postalAddresses count] >0) {
//            NSMutableArray *addresses = [[NSMutableArray alloc] initWithArray:contact.postalAddresses];
//            [addresses addObject:addressLabel];
//            contact.postalAddresses = addresses;
//        }else{
//            contact.postalAddresses = @[addressLabel];
//        }
//    }
}

@end
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

AddressBook

  • 2012-12-24 14:24
  • 3.17MB
  • 下载

jap网络通讯录addressBook

  • 2012-06-06 23:57
  • 1.36MB
  • 下载

110 AddressBook

1.AddressBook和AddressBookUI均可以访问通讯录, AddressBook可以获得通讯录的内容但是没有UI界面, AddressBookUI可以获得通讯录的内容并且有界面。2...

struts例子addressbook

  • 2010-08-08 20:01
  • 2.27MB
  • 下载

addressbook

  • 2010-07-01 20:56
  • 527KB
  • 下载

ABAddressBook & AddressBook UI 文件介绍(IOS开发)

原文链接地址:http://what-when-how.com/ios-4/accessing-the-address-book-ios-4/ 下图为 文章的核心部分。介绍了两个 ios add...

addressbook

  • 2008-04-16 20:12
  • 836KB
  • 下载

通讯簿AddressBook

  • 2008-12-14 17:18
  • 971KB
  • 下载

AddressBook UI 官方demo (IOS)

对于系统的contact 联系簿的ViewController 如何使用,下面又一个官方的demo,大家可以拿去看看。 这个东西,找了一段时间。其实不是很难,配合自己写的数据模型,很容易就能做出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)