我正在使用 gthe 以下函数添加联系人列表(以前以 NSData 格式保存)。然而,联系人被添加,在显示确认消息之前需要两分钟的延迟。首先,当我运行应用程序时,我看不到结果,我以为有问题,然后我会关闭应用程序,但不小心等了 5 分钟,发现联系人已添加并出现在地址中书。
(无效)recoverContacts:(NSData *)datacon {
NSMutableArray *d2contact = [NSKeyedUnarchiver unarchiveObjectWithData:datacon]; CNContactStore *store = [[CNContactStore alloc] init];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL grant, NSError * _Nullable error) { if (!granted) { dispatch_async(dispatch_get_main_queue(), ^{ // 用户没有授予访问权限; // 所以,再次告诉用户这里为什么应用程序需要权限才能完成它的工作; // 这被分派到主队列,因为这个请求可能在后台线程上运行 }); 返回; } 别的{
// create contact CNMutableContact *contact = [[CNMutableContact alloc] init]; CNMutableContact *contact1 = [[CNMutableContact alloc] init]; contact = d2contact[1]; contact1.familyName = contact.familyName; contact1.givenName = contact.givenName; CNSaveRequest *request = [[CNSaveRequest alloc] init]; [request addContact:contact1 toContainerWithIdentifier:nil]; [sinformation setText:[NSString stringWithFormat:@"Hare Krishna Hare Rama!!!%@", contact1]]; //save it NSError *saveError; if (![store executeSaveRequest:request error:&saveError]) { [sinformation setText:[NSString stringWithFormat:@"Hare Krishna Hare Rama!!!%@", saveError]]; } }
}]; }