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 и контроллеров детального представления. Когда вы создаете 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 дается на самом верху. Кто-нибудь может объяснить это?