/** 1.更新数据 */
- (void)updateDataWithCompletion:(nullable void (^)(NSError *_Nullable error))completion{
CXCallDirectoryManager *manager = [CXCallDirectoryManager sharedInstance];
[manager reloadExtensionWithIdentifier:IdentifierExtension completionHandler:^(NSError * _Nullable error) {
NSLog(@"%s %@", __FUNCTION__, error);
completion(error);
}];
}
/** 2.获取权限 */
- (void)getEnabledStatusWithCompletionHandler:(void (^)(CXCallDirectoryEnabledStatus enabledStatus, NSError *_Nullable error))completion{
CXCallDirectoryManager *manager = [CXCallDirectoryManager sharedInstance];
[manager getEnabledStatusForExtensionWithIdentifier:IdentifierExtension completionHandler:^(CXCallDirectoryEnabledStatus enabledStatus, NSError * _Nullable error) {
completion(enabledStatus, error);
}];
}
/** 3.保存通讯录来电信息 */
- (void)saveDataWithCompletion:(void(^)(BOOL success))completion{
NSString *filePathIdentification = [self readPathIdentification];
// [[NSFileManager defaultManager] removeItemAtPath:filePathIdentification error:nil];
if (self.arrayCall.count > 0) {
BOOL success = [self.arrayCall writeToFile:filePathIdentification atomically:YES];
if (success) {
completion(YES);
}else {
completion(NO);
}
}else{
completion(YES);
}
}
- (void)saveKHDataWithCompletion:(void(^)(BOOL success))completion{
NSString *filePathIdentification = [self readKeHuPlistPath];
// [[NSFileManager defaultManager] removeItemAtPath:filePathIdentification error:nil];
if (self.khCall.count > 0) {
BOOL success = [self.khCall writeToFile:filePathIdentification atomically:YES];
if (success) {
completion(YES);
}else {
completion(NO);
}
}else{
completion(YES);
}
}
- (void)saveLXRDataWithCompletion:(void(^)(BOOL success))completion{
NSString *filePathIdentification = [self readLXRPlistPath];
// [[NSFileManager defaultManager] removeItemAtPath:filePathIdentification error:nil];
if (self.lxrCall.count > 0) {
BOOL success = [self.lxrCall writeToFile:filePathIdentification atomically:YES];
if (success) {
completion(YES);
}else {
completion(NO);
}
}else{
completion(YES);
}
}
/** 4.读取来电信息 */
-(NSArray<NSDictionary *> *)readData
{
NSString *filePathIdentification = [self readPathIdentification];
NSArray *arr = [NSArray arrayWithContentsOfFile:filePathIdentification];
NSDictionary *dic = [arr firstObject];
NSArray *dataArr = [dic allKeys];
return [self arraySort:dataArr ASC:YES];
}
-(NSArray<NSDictionary *> *)readKHData
{
NSString *filePathIdentification = [self readKeHuPlistPath];
NSArray *arr = [NSArray arrayWithContentsOfFile:filePathIdentification];
NSDictionary *dic = [arr firstObject];
NSArray *dataArr = [dic allKeys];
return [self arraySort:dataArr ASC:YES];
}
-(NSArray<NSDictionary *> *)readLXRData
{
NSString *filePathIdentification = [self readLXRPlistPath];
NSArray *arr = [NSArray arrayWithContentsOfFile:filePathIdentification];
NSDictionary *dic = [arr firstObject];
NSArray *dataArr = [dic allKeys];
return [self arraySort:dataArr ASC:YES];
}
/** 1.获取通讯录扩展文件位置 */
- (NSString *)readPathIdentification{
NSURL *fileUrl = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@""];
NSString *filePath = [fileUrl.absoluteString substringFromIndex:(@"file://".length)];
NSString *filePathIdentification = [filePath stringByAppendingString:@""];
return filePathIdentification;
}
//获取客户Plist路径
-(NSString *)readKeHuPlistPath{
NSURL *fileUrl = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@""];
NSString *filePath = [fileUrl.absoluteString substringFromIndex:(@"file://".length)];
NSString *filePathIdentification = [filePath stringByAppendingString:@""];
return filePathIdentification;
}
//获取客户Plist路径
-(NSString *)readLXRPlistPath{
NSURL *fileUrl = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@""];
NSString *filePath = [fileUrl.absoluteString substringFromIndex:(@"file://".length)];
NSString *filePathIdentification = [filePath stringByAppendingString:@""];
return filePathIdentification;
}
/** 2.数组排序 */
- (NSArray<NSDictionary *> *)arraySort:(NSArray<NSDictionary *> *)array ASC:(BOOL)ASC
{
if (array == nil || [array count] == 0) {
return nil;
}
return [array sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
if(ASC){
if([obj1 integerValue] > [obj2 integerValue]) {
return(NSComparisonResult)NSOrderedDescending;
}
if([obj1 integerValue] < [obj2 integerValue]) {
return(NSComparisonResult)NSOrderedAscending;
}
}else{
if([obj1 integerValue] < [obj2 integerValue]) {
return(NSComparisonResult)NSOrderedDescending;
}
if([obj1 integerValue] > [obj2 integerValue]) {
return(NSComparisonResult)NSOrderedAscending;
}
}
return(NSComparisonResult)NSOrderedSame;
}];
}
- (NSMutableArray<NSDictionary *> *)arrayCall
{
if (!_arrayCall) {
if ([self readData].count > 0) {
_arrayCall = [self readData].mutableCopy;
}else {
_arrayCall = @[].mutableCopy;
}
}
return _arrayCall;
}
-(NSMutableArray<NSDictionary *> *)khCall{
if (!_khCall) {
if ([self readKHData].count > 0) {
_khCall = [self readKHData].mutableCopy;
}else {
_khCall = @[].mutableCopy;
}
}
return _khCall;
}
-(NSMutableArray<NSDictionary *> *)lxrCall{
if (!_lxrCall) {
if ([self readLXRData].count > 0) {
_lxrCall = [self readLXRData].mutableCopy;
}else{
_lxrCall = @[].mutableCopy;
}
}
return _lxrCall;
}
4. 宿主程序存储数据管理器代码
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1.演示私人通讯录• 学习目的:控制器跳转,控制器之间传值,数据存储 2.项目演示:(4个界面,交给4个控制器管理...
- Java提供了一套完整的IO流体系,包括FileInputStream、FileOutPutStream等,通过这...
- 1 切分忧虑有一个很经典的例子就是空城计,很好的诠释了切分忧虑。把大问题切分成小担心!这是切分忧虑另一个解释,遇到...