2015-11-05 1 views
7

Ich versuche, eine Gruppe mit dem Contacts Framework zu erstellen und zu speichern. Zuerst autorisiert der Benutzer die App für den Zugriff auf Kontakte. Ein Viewcontroller wird vorgestellt und mit einer + Schaltfläche wird ein Alertview mit Textfeld angezeigt.neue Gruppe mit Kontakten erstellen Framework, CNErrorDomain Code = 2

Der Benutzer gibt den gewünschten Gruppennamen ein und klickt auf die Schaltfläche des Alertview (speichern).

Dies ist der Code zum Speichern der neuen Gruppe. Der Gruppenname ist vorhanden, aber es ist nicht möglich, diese Gruppe zu speichern sowieso:

CNContactStore *contactStore = [CNContactStore new]; 

[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *error){ 
if (granted) { 

    CNMutableGroup *newGroup = [CNMutableGroup new]; 
    CNSaveRequest *saveRequest = [CNSaveRequest new]; 

    [newGroup setName:groupName]; 

    //when saving to container with identifier nil, we get this error: 
    //Error Domain=CNErrorDomain Code=2 "(null)" UserInfo={CNInvalidRecords=(
    //"<CNMutableGroup: 0x10a059f20: identifier=2F4981B9-8A47-45A4-8841-1FA5A09584A4:ABGroup, name=gghh>" 
    [saveRequest addGroup:newGroup toContainerWithIdentifier:nil]; 
    [contactStore executeSaveRequest:saveRequest error:&error]; 

    if (error){ 
     //error saving group 
     //NSLog(@"error message: %@",error); 
    } else { 
     //if no errors, reload tableview 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.tableView reloadData]; 
     }); 
    } 
} 
}]; 



Error Domain=CNErrorDomain Code=2 "(null)" UserInfo={CNInvalidRecords=(
    "<CNMutableGroup: 0x14fb3e5e0: identifier=8E490585-1223-407E-B353-0D25609B05AB:ABGroup, name=jddjd>" 
)} 

Die nächste Merkwürdige ist: Warum wird die Anfrage :ABGroup am Ende diese Gruppe
mit der Kennung zu speichern speichern versuchen?

Der Fehler enthält eine Info über CNInvalidRecords.
Ich verwende nur das Contacts Framework.
Warum passiert das?

Irgendwelche Lösungen dafür?

Antwort

2

Es funktionierte gut für mich, mit im Wesentlichen den gleichen Code.

CNMutableGroup *newGroup = [CNMutableGroup new]; 
CNSaveRequest *saveRequest = [CNSaveRequest new]; 
[newGroup setName:self.groupName]; 
[saveRequest addGroup:newGroup toContainerWithIdentifier:nil]; 
[contactStore executeSaveRequest:saveRequest error:&error]; 

und eine neue Gruppe

+1

damit eine neue Gruppe, wenn, sofern iCloud als Standard in den Einstellungen festgelegt> Mail, Kalender, Kontakte. Wenn der Standardwert ein Exchange ist, können keine Gruppen erstellt und gespeichert werden. Und deshalb bekomme ich diesen Fehler. Ich suche nach einer Abhilfe für dieses Problem. – brush51

+0

Laut Apples Dokumentation können Sie keine Gruppe in einem Exchange-Container erstellen. Sie müssen für jede "Gruppe" einen separaten Container erstellen. –

+0

Ja, das ist richtig, aber ich denke, es wäre nicht möglich, einen separaten Container zu erstellen, um eine neue Gruppe zu erstellen und lokal zu speichern, wenn iCloud Sync aktiviert ist. – brush51

Verwandte Themen