转移和编辑存储在coredata中的整数信息的问题

时间:2010-12-02 18:52:11

标签: iphone core-data integer uitextfield

我正在寻求帮助。我试过搜索这个网站并尝试修改我的代码,但我被卡住了。我的问题是显示和编辑存储在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'

2 个答案:

答案 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