Указатели и назначение данных в Objective-C - PullRequest
1 голос
/ 25 мая 2011

У меня проблемы с указателями в Objective-C.По сути, в моем классе есть следующая структура:

UITableView *list;
NSArray *objArray;
UIPickerView *pickerCtrl;

Мой «список» показывает данные, содержащиеся в objArray, который является временной структурой, связывающей пользовательские объекты NSO различных типов (не хранящиеся в моем текущем объекте).

При выборе одного элемента в списке отображается «pickerCtrl», отображающий соответствующие данные в зависимости от того, какая строка TableView выбрана в настоящий момент.

Моя цель - заменить данные oldObject (внешний объект,доступ к objArray) с данными newObject (выбранными в PickerView).Например:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    id oldObject = [objArray objectAtIndex:[[list indexPathForSelectedRow] row]];
    id newObject = [pickerData objectAtIndex:row];

    *oldObject = *newObject;
}

В отладчике oldObject и newObject имеют правильные адреса памяти.Проблема в том, что, похоже, не выполняется присваивание, и старые данные никогда не заменяются данными из "newObject".

Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Использование:

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2

Пример:

[objArray exchangeObjectAtIndex:[[list indexPathForSelectedRow] row],row];
1 голос
/ 25 мая 2011

Это неправильный способ работы с изменяемыми массивами, вы думаете, что он слишком низкоуровневый.

Скорее попробуйте это:

[objArray removeObject:oldObject];
[objArray addObject:newObjec];

Вы также можете использовать insertObject:atIndex: метод.См. Ссылку для NSMutableArray для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...