Ich habe einen tableviewController mit benutzerdefinierten Zellen, die ein Label und einen Switch enthalten. i speichern den Zustand der Schalter in CoredataUSSwitch in CoreData speichern
- (IBAction)roomSwitch:(id)sender {
NSLog(@"Switch wurde betätigt");
NSManagedObjectContext *context = [app managedObjectContext];
UISwitch *switcher = sender;
NSInteger rowInIndexPath = switcher.tag;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowInIndexPath inSection:0];
Raumattribute *att=[self.fetchedResultsController objectAtIndexPath:indexPath];
att.switch = [NSNumber numberWithBool:switcher.on];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
NSLog(@"Schalter: %@", att.switch);
}
This Works ->
2012-03-28 16:43:34.657 Book-App[40011:11903] Switch: 1
2012-03-28 16:43:37.373 Book-App[40011:11903] Switch wurde betätigt
2012-03-28 16:43:37.377 Book-App[40011:11903] Switch: 0
In meinem cellForRowAtIndexPath i [cell.raumSwitch addTarget:self action:@selector(roomSwitch:) forControlEvents:UIControlEventValueChanged];
wich ruft die roomSwitch haben:
Jetzt ist mein Problem, dass, wenn ich einen Schalter ändere, ein anderer Schalter seinen Zustand auch ändert. Wie kann ich dem Switch sagen, zu welcher Zeile er gehört?
Mein zweites Problem ist, wenn ich die Ansicht ändere, änderten alle Schalter auf aus. Wie kann ich den aktuellen Status anzeigen, der in CoreData gespeichert ist?
Ich versuchte
cell.roomSwitch = [managedObject valueForKey:@"switch"];
aber es stürzt ab.
Hoffe jemand meine Probleme zu verstehen.
Ich habe die Lösung selbst gefunden mySwitch.on = [[managedObject valueForKey: @ "schalter"] boolValue]; THX für Ihre Hilfe! – Bashud