UITextField *textField;
UISwitch *someSwitch;
NSManagedObject *editedObject;
NSString *editedFieldKey;
NSString *editedFieldName;
NSString *z=[NSString stringWithFormat:@"%@",[editedObject valueForKey:editedFieldKey]];
NSString *y=[NSString stringWithFormat:@"b"];
if(z==y){
[someSwitch setOn:YES animated:YES];
}
else{[someSwitch setOn:NO animated:YES];}
-(IBAction) toggleButtonPressed{
NSString *a=[NSString stringWithFormat:@"a"];
NSString *b=[NSString stringWithFormat:@"b"];
if(someSwitch.on){
[editedObject setValue:b forKey:editedFieldKey];
}
else{
[editedObject setValue:a forKey:editedFieldKey];
}
}
-(IBAction)save {
NSUndoManager * undoManager = [[editedObject managedObjectContext] undoManager];
[undoManager setActionName:[NSString stringWithFormat:@"%@", editedFieldName]];
if (editingName){
[editedObject setValue:textField.text forKey:editedFieldKey];
}else{
[self toggleButtonPressed];
}
[self.navigationController popViewControllerAnimated:YES];
}
Я не могу заставить UISwitch работать в контексте контроллеров Core Data и Detail View. Когда вы создаете BOOL в основных данных, а затем создаете соответствующий класс в xcode, он создает NSNumber. Это нормально, но вместо того, чтобы делать «0» и «1» при сохранении и вызове данных, он выводит очень большие целые числа (7-8 цифр). То, что я сделал выше, заключалось в том, чтобы сохранить информацию в виде двоичной строки, используя «a» или «b» для строки для хранения. Это не сработало, в основном потому, что я не могу заставить UISwitch загружаться с ранее сохраненным значением (включено или выключено). Я уверен, что это было рассмотрено раньше, но я не могу найти много документации в Интернете. Если есть какие-либо идеи или предложения относительно приведенного выше кода, дайте мне знать. Спасибо.
2011-12-06 15:49:41.042 sampNav[820:207] 101783056
2011-12-06 15:49:41.043 sampNav[820:207] 80887600
- (IBAction)save {
NSUndoManager * undoManager = [[editedObject managedObjectContext] undoManager];
[undoManager setActionName:[NSString stringWithFormat:@"%@", editedFieldName]];
if (editingName){
[editedObject setValue:textField.text forKey:editedFieldKey];
}else{
[self toggleButtonPressed];
}
[self.navigationController popViewControllerAnimated:YES];
}
-(IBAction) toggleButtonPressed{
if (someSwitch.on==YES)
{
[editedObject setValue:[NSNumber numberWithInt:1] forKey:editedFieldKey];
NSLog(@"%d",[editedObject valueForKey:editedFieldKey]);
}
else [editedObject setValue:[NSNumber numberWithInt:0] forKey:editedFieldKey];
NSLog(@"%d",[editedObject valueForKey:editedFieldKey]);
}
Проблема в том, что когда эти значения хранятся как объекты NSNumber, значения представляют собой большие целые числа. NSLog приведен в самом верху. Кто-нибудь может это объяснить?