Hallo,
ich denke mir das diese Frage hier sehr einfach ist, aber ich habe es leider nicht geschafft es zu lösen. Habe viel probiert und viel im Netz gesucht, bin aber leider nie auf eine Lösung gekommen.
Ok jetzt zu meinem Problem. Ich hole mir Daten aus dem Adressbuch und will diese weiter verarbeiten. Die Daten holen ist kein Problem, mein Problem kommt daher das ich einen neuen UITalbeViewController laden muss um meine Daten die ich aus dem Adressbuch erhalten habe weiter zu verarbeiten. Wenn ich nicht eine Person aus dem Adressbuch picke und direkt den Segue aufrufen geht alles, nur wenn ich die Daten aus dem Adressbuch picke kommt immer folgender Fehler:
Hier mein Code wie ich versuche auf meine UITableViewController zuzugreifen.
Alles anzeigen
Ich hoffe das einer von euch meinen Fehler findet und mir sagen kann was ich falsch mache.
Danke
Gruß
Bongartz
ich denke mir das diese Frage hier sehr einfach ist, aber ich habe es leider nicht geschafft es zu lösen. Habe viel probiert und viel im Netz gesucht, bin aber leider nie auf eine Lösung gekommen.
Ok jetzt zu meinem Problem. Ich hole mir Daten aus dem Adressbuch und will diese weiter verarbeiten. Die Daten holen ist kein Problem, mein Problem kommt daher das ich einen neuen UITalbeViewController laden muss um meine Daten die ich aus dem Adressbuch erhalten habe weiter zu verarbeiten. Wenn ich nicht eine Person aus dem Adressbuch picke und direkt den Segue aufrufen geht alles, nur wenn ich die Daten aus dem Adressbuch picke kommt immer folgender Fehler:
Hier mein Code wie ich versuche auf meine UITableViewController zuzugreifen.
Quellcode
-
- -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
- if (buttonIndex == 0) {
- [self performSegueWithIdentifier:@"neuePerson" sender:self];
- } else if (buttonIndex == 1) {
- [self performSegueWithIdentifier:@"vorhandenePersonen" sender:self];
- } else if (buttonIndex == 2) {
- ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
- picker.peoplePickerDelegate = self;
- [self presentViewController:picker animated:YES completion:nil];
- }
- }
- -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- if([segue.identifier isEqualToString:@"vorhandenePersonen"] && self.tableView.editing == NO) {
- AddNewPersonTableViewController *secondController = (id) [segue.destinationViewController topViewController];
- secondController.event =self.event;
- return;
- }
- if([segue.identifier isEqualToString:@"neuePerson"] && self.tableView.editing == NO) {
- AddNewPersonTableViewController *controller = (id) [segue.destinationViewController topViewController];
- controller.person = [JSMCoreDataHelper insertManagedObjectOfClass:[Person class] inManagedObjectContext:[JSMCoreDataHelper managedObjectContext]];
- controller.kosten = [JSMCoreDataHelper insertManagedObjectOfClass:[Kosten class] inManagedObjectContext:[JSMCoreDataHelper managedObjectContext]];
- controller.personToEdit = NO;
- NSMutableSet *personEvent;
- if (self.event.person == nil) {
- personEvent = [NSMutableSet setWithObjects:controller.person, nil];
- } else {
- personEvent = [NSMutableSet setWithArray:[self.event.person allObjects]];
- [personEvent addObject:controller.person];
- }
- self.event.person = personEvent;
- NSMutableSet *eventPerson;
- if (self.event.person == nil) {
- eventPerson = [NSMutableSet setWithObjects:self.event, nil];
- } else {
- eventPerson = [NSMutableSet setWithArray:[controller.person.event allObjects]];
- [eventPerson addObject:self.event];
- }
- controller.person.event = eventPerson;
- controller.event = self.event;
- return;
- }
- //Bearbeiten der Datensätze
- if([segue.identifier isEqualToString:@"neuePerson"] && self.tableView.editing == YES) {
- AddNewPersonTableViewController *controller = (id) [segue.destinationViewController topViewController];
- Person *personToEdit = [self.fetchedResultsController objectAtIndexPath:[self.tableView indexPathForSelectedRow]];
- controller.person = personToEdit;
- controller.personToEdit = YES;
- NSPredicate* suchePerson = [NSPredicate predicateWithFormat:@"%K == %@", cEntityKostenRelationshipPerson, personToEdit];
- NSPredicate* sucheEvent = [NSPredicate predicateWithFormat:@"%K == %@", cEntityKostenRelationshipEvent, self.event];
- NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects: suchePerson, sucheEvent, nil]];
- for (Kosten* gefundeneKosten in [personToEdit.kosten filteredSetUsingPredicate:compoundPredicate]) {
- if (gefundeneKosten) {
- controller.kosten = gefundeneKosten;
- }
- }
- controller.event = self.event;
- return;
- }
- if([segue.identifier isEqualToString:@"getPersonFormAddressBook"] && self.tableView.editing == NO) {
- // Daten aus dem Adressbuch auslesen
- NSString* firstname = (__bridge_transfer NSString*)ABRecordCopyValue(self.personFormAddressBook, kABPersonFirstNameProperty);
- NSString* lastname = (__bridge_transfer NSString*)ABRecordCopyValue(self.personFormAddressBook, kABPersonLastNameProperty);
- NSString* phone = nil;
- ABMultiValueRef phoneNumbers = ABRecordCopyValue(self.personFormAddressBook, kABPersonPhoneProperty);
- if (ABMultiValueGetCount(phoneNumbers) > 0) {
- phone = (__bridge_transfer NSString*)
- ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
- } else {
- phone = @"[None]";
- }
- //neue Person erstellen
- AddNewPersonTableViewController *controller = (id) [segue.destinationViewController topViewController];
- controller.person = [JSMCoreDataHelper insertManagedObjectOfClass:[Person class] inManagedObjectContext:[JSMCoreDataHelper managedObjectContext]];
- controller.kosten = [JSMCoreDataHelper insertManagedObjectOfClass:[Kosten class] inManagedObjectContext:[JSMCoreDataHelper managedObjectContext]];
- controller.personToEdit = NO;
- controller.person.vorname = firstname;
- controller.person.nachname = lastname;
- NSMutableSet *personEvent;
- if (self.event.person == nil) {
- personEvent = [NSMutableSet setWithObjects:controller.person, nil];
- } else {
- personEvent = [NSMutableSet setWithArray:[self.event.person allObjects]];
- [personEvent addObject:controller.person];
- }
- self.event.person = personEvent;
- NSMutableSet *eventPerson;
- if (self.event.person == nil) {
- eventPerson = [NSMutableSet setWithObjects:self.event, nil];
- } else {
- eventPerson = [NSMutableSet setWithArray:[controller.person.event allObjects]];
- [eventPerson addObject:self.event];
- }
- controller.person.event = eventPerson;
- controller.event = self.event;
- CFRelease(phoneNumbers);
- return;
- }
- }
- #pragma mark - Address Book handling
- - (void)peoplePickerNavigationControllerDidCancel:
- (ABPeoplePickerNavigationController *)peoplePicker {
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
- self.personFormAddressBook = person;
- [self performSegueWithIdentifier:@"getPersonFormAddressBook" sender:self];
- //[self displayPerson:person];
- [self dismissViewControllerAnimated:YES completion:nil];
- return NO;
- }
- - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
- return NO;
- }
Ich hoffe das einer von euch meinen Fehler findet und mir sagen kann was ich falsch mache.
Danke
Gruß
Bongartz
Vielen Dank
Gruß
Bongartz
Gruß
Bongartz