blog:developfan.com
简书:http://www.jianshu.com/u/9fed08d0ebfb
在ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称“种子用户功能”,太可怕了)。对此七两总结了自己使用本地通讯录时的注意点,希望对大家有所帮助。
首先对于获取本地通讯录的信息,大苹果在ios9.0之后推出了另外的一个使用方式(controller),类似于之前searchcontroller与searchBar,对此七两在此分成两部分,ios9.0前与ios9.0后两部分进行总结。
一、iOS9.0前
先附上七两自己写得代码:
对于苹果对于通讯录的操作实现可以类比sqlite与sqlite3的管理实现方式,及我们在使用通讯录时需调用类似于sqlite3的管理对象,对此七两自
己习惯将对通讯录的操作过程写成单例,具体如下:
.h文件
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
#import <UIKit/UIKit.h>
typedef void(^YFAddressBookBlock)(BOOL canRead, ABAuthorizationStatus authorStatus);
@interface YFAddressBookManger : NSObject
@property (nonatomic, assign) ABAddressBookRef addressBook;
//单例类方法
+ (instancetype)shareManger;
//设置传值
- (void)canReadAddressBookWithBlock:(YFAddressBookBlock)block;
- (void)gotoSetting:(UIViewController *)vc;
@end
.m文件
.h文件
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
#import <UIKit/UIKit.h>
typedef void(^YFAddressBookBlock)(BOOL canRead, ABAuthorizationStatus authorStatus);
@interface YFAddressBookManger : NSObject
@property (nonatomic, assign) ABAddressBookRef addressBook;
//单例类方法
+ (instancetype)shareManger;
//设置传值
- (void)canReadAddressBookWithBlock:(YFAddressBookBlock)block;
- (void)gotoSetting:(UIViewController *)vc;
@end
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
#import <UIKit/UIKit.h>
typedef void(^YFAddressBookBlock)(BOOL canRead, ABAuthorizationStatus authorStatus);
@interface YFAddressBookManger : NSObject
@property (nonatomic, assign) ABAddressBookRef addressBook;
//单例类方法
+ (instancetype)shareManger;
//设置传值
- (void)canReadAddressBookWithBlock:(YFAddressBookBlock)block;
- (void)gotoSetting:(UIViewController *)vc;
@end
.m文件