我正在寻求帮助。我试过搜索这个网站并尝试修改我的代码,但我被卡住了。我的问题是显示和编辑存储在coredata中的整数属性。我有一个使用UITableView的detailview。它似乎在单元格中正确显示整数,使用以下代码:
cell.textLabel.text = @"Set target";
cell.detailTextLabel.text = [match.set_target stringValue];
但是,当我尝试通过将值传递到编辑视图上的UITextField来编辑该值时,它会错误地显示整数(例如3显示为53916)。我使用以下代码将值传递给UITextField :(注意,editedObject是NSManagedObject,numField是UITextField,editedFieldKey是NSString)。
[numField setText:[NSString stringWithFormat:@"%d", editedFieldKey]];
使用以下代码将值传递到详细视图的编辑视图:
controller.editedFieldKey = @"set_target";
controller.editedFieldName = NSLocalizedString(@"Number of sets to win", @"set_legs");
我可以显示,编辑和保存字符串和日期,但我无法弄清楚整数。任何帮助将不胜感激。
编辑1
我在编辑视图中保存并取消了按钮。保存按钮调用:
- (IBAction)save {
// Set the action name for the undo operation.
NSUndoManager * undoManager = [[editedObject managedObjectContext] undoManager];
[undoManager setActionName:[NSString stringWithFormat:@"%@", editedFieldName]];
if (editingDate) {
[editedObject setValue:dateField.date forKey:editedFieldKey];
}
else if (editingNum) {
[editedObject setValue: [NSNumber numberWithInteger: [numField.text integerValue]] forKey: editedFieldKey];
}
else {
[editedObject setValue: textField.text forKey:editedFieldKey];
}
[self.navigationController popViewControllerAnimated:YES];
}
使用显示整数的代码设置为:
[numField setText:[NSString stringWithFormat:"%d", [editedObject valueForKey:editedFieldKey]]];
我对该行有一个警告:从不兼容的指针类型传递'StringwithFormat'的参数1。 运行时崩溃:+ [NSString WithFormat:]:无法识别的选择器发送到类0x211d60'
答案 0 :(得分:2)
您正在将字符串传递给numberWithInteger
,而您需要字符串中的整数值。尝试将其更改为:
[editedObject setValue: [NSNumber numberWithInteger: [numField.text integerValue]] forKey: editedFieldKey]; .
答案 1 :(得分:1)
“editedFieldKey是NSString”
[numField setText:[NSString stringWithFormat:@"%d", editedFieldKey]];
用%@
[numField setText:[NSString stringWithFormat:@"%@", editedFieldKey]];
编辑:
由于您没有向字符串添加任何内容,因此不需要stringWithFormat:
消息。
以下将产生相同的结果。
[numField setText:editedFieldKey];
对于那些喜欢'。'的人。属性访问器的语法
numField.text = editedFieldKey;
编辑2
我将假设您将托管对象和上下文传递给编辑控制器...
显示托管对象的“set_target”属性的值。
[numField setText:[[editedObject valueForKey:editedFieldKey] stringValue]]; // set_target is returned as an NSNumber