J'essaye de mettre en application une application de contact.NSOperationQueue .... sélecteur non reconnu envoyé
Dans MyContactsViewController, j'essaie d'accéder aux contacts et si l'accès est accordé, je vais chercher les contacts de mon carnet d'adresses. Le ContactHandler
est ma classe de modèle (singleton) qui a la méthode appelée getAllContacts
pour obtenir les contacts dans un NSMutableArray.
- (void)viewDidLoad {
[super viewDidLoad];
contactHandler = [ContactHandler sharedInstance];
if(!self.accessGranted){
NSOperationQueue *queue =[[ NSOperationQueue alloc]init];
[queue performSelectorOnMainThread:@selector(getAccessToAddressBook) withObject:self waitUntilDone:YES];
contactList = [contactHandler getAllContacts];
}
else{
contactList = [contactHandler getAllContacts];
}
}
-(BOOL)getAccessToAddressBook{
CNContactStore * contactStore = [[CNContactStore alloc] init];
if([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts] == CNAuthorizationStatusNotDetermined){
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if(granted){
self.accessGranted = YES;
}
else{
self.accessGranted = NO;
}
}];
}
else if([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]== CNAuthorizationStatusAuthorized){
self.accessGranted = YES;
}
else{
self.accessGranted = NO;
}
return self.accessGranted;
}
Mais je reçois cette erreur -
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSOperationQueue getAccessToAddressBook]: unrecognized selector sent to instance 0x137630700'
Quelqu'un peut-il s'il vous plaît aider.
'[file d'attente performSelectorOnMainThread: @selector (getAccessToAddressBook) withObject: self waitUntilDone: YES]; 'Que voulez-vous faire exactement? C'est la ligne qui cause le problème. – Larme
En appuyant sur cmd + clic, ça va à la méthode? Essayez aussi d'attendreUntilDone: NO – Hima
J'essaie d'obtenir la permission avant d'aller chercher les contacts. Fondamentalement, je veux appeler la méthode getAllContacts après avoir reçu une réponse de la méthode getAccessToAddressBook. – Natasha