Проблема с передачей и редактированием целочисленной информации, хранящейся в coredata - PullRequest
1 голос
/ 02 декабря 2010

Я ищу помощь. Я пытался найти этот сайт и пытался изменить свой код, но я застрял. Моя проблема с отображением и редактированием целочисленного атрибута, хранящегося в coredata. У меня есть подробный вид, который использует UITableView. Кажется, правильно отображать целое число в ячейке, используя следующий код:

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]]];

У меня предупреждение о строке: передача аргумента 1 из StringwithFormat из несовместимого типа указателя. При запуске происходит сбой с: + [NSString WithFormat:]: нераспознанный селектор, отправленный в класс 0x211d60 '

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

Вы передаете строку в numberWithInteger, когда вместо этого вы хотите получить целое значение из строки.Попробуйте изменить это на это:

[editedObject setValue: [NSNumber numberWithInteger: [numField.text integerValue]] forKey: editedFieldKey];  .
1 голос
/ 03 декабря 2010

"editedFieldKey is NSString"

[numField setText:[NSString stringWithFormat:@"%d", editedFieldKey]];

замените форматер на %@

[numField setText:[NSString stringWithFormat:@"%@", editedFieldKey]];

РЕДАКТИРОВАТЬ:

Поскольку выничего не добавляя в строку, сообщение stringWithFormat: не нужно.Следующий результат даст тот же результат.

[numField setText:editedFieldKey];

И для тех, кто предпочитает '.'синтаксис для методов доступа к свойствам

numField.text = editedFieldKey;

EDIT 2

Я предполагаю, что вы передаете свой управляемый объект и контекст в контроллер редактирования ...

Для отображения значения атрибута "set_target" вашего управляемого объекта.

[numField setText:[[editedObject valueForKey:editedFieldKey] stringValue]]; // set_target is returned as an NSNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...