Есть ли способ автоматически связать UITextField с переменной в моей модели данных?

я строю контроллер представления, где ям добавив кучуUITextFieldс моей точки зрения программно. Я хочу предварительно заполнить текстовые поля текстом, который яm загружается из CoreData, но позволяет пользователю войти и изменить этот текст, если он хочет. Затем мне нужно вернуться и снова сохранить этот новый текст обратно в CoreData, а также выполнить вычисления с использованием нового значения. Само сохранение и загрузка неэто проблема, но яЯ ищу хороший способ отследить, что изменил пользователь.

В прошлом ямы сделали это с.tag собственностьUITextField иtextFieldDidEndEditing: метод делегата. Проблема в том, что яЯ собираюсь иметь десятки текстовых полей в этом представлении - достаточно, чтобы я могдействительно помню что.tag принадлежит к какой переменной в моей модели. Необходимость вернуться назад, чтобы посмотреть, какой тег я назначил при создании, будет болезненным, и все это кажется действительно подверженным ошибкам. Кроме того, яЯ собираюсь создавать текстовые поля в нескольких различных циклах, поэтому получение уникального тега для каждого текстового поля при его создании будет затруднено (возможно, невозможно?).

Что я'ищу способ "галстук" UITextField для переменной в моей модели, когда я ее создаю и просто знаю с этого момента, когда пользователь обновляет это текстовое поле, значение, которое я указываю в моей модели, будет немедленно обновляться для использования в будущих вычислениях и сохранения обратно в CoreData когда пользователь покидает экран. Есть ли способ сделать это?

РЕДАКТИРОВАТЬ 1: Еще одна вещь, чтобы отметить, что моя модель сама по себе довольно сложная. У меня несколько разных кастомовNSObject подклассы, которые содержат разные части моих данных. Некоторые из объектов имеют свойства, которые сами являются другими пользовательскими объектами. У меня также есть словари, где значения будут экземплярами некоторых пользовательских объектов.

В качестве примера у меня могут быть следующие объекты:

MySmallObject1, который имеет свойства,namesize, а такжеvalue (все )NSStringsMySmallObject2, который имеет свойстваdate а такжеcost (NSDate и)NSNumberMyBigObject, который имеет свойстваbox1 а такжеbox2 (которыеMySmallObject1 а такжеMySmallObject2 экземпляры соответственно)theDict, который являетсяNSDictionary экземпляр, который имеетMyBigObjects как значения

Поэтому, когда я создаю свои текстовые поля, я могу спуститься по дереву, которое будет выглядеть примерно так:

for (NSString *key in [theDict allKeys])
{
    UITextField *txt = [[UITextField alloc] initWithFrame:...];
    txt.text = [[(MyBigObject *)[theDict objectForKey:key] box1] name];
    [self.view addSubview:txt];
}

В этом случае мне нужно знать, когда пользователь изменяет текст в любом изtxt и обновите соответствующее значение через дерево.

РЕДАКТИРОВАТЬ 2: пытаясь реализовать @Till 'С предложением в комментариях я начал читатьучебник по указателям в C, Кажется, мне нужно идти по этому пути, но яя изо всех сил, чтобы получить& а также* из мира C, чтобы хорошо играть с подклассами NSObject, о которых я упоминал в своем последнем редактировании из мира Objective-C. Чтобы получить @ Till 'С предложением работать, я думаю, мне нужно каким-то образом сохранить место в памяти моего значения в этом сложном дереве объектов. Таким образом, мой блок кода из последней редакции стал бы:

.h
@property (nonatomic, strong) NSMutableDictionary *tagDict;

.m
for (NSString *key in [theDict allKeys])
{
    UITextField *txt = [[UITextField alloc] initWithFrame:...];
    txt.text = [[(MyBigObject *)[theDict objectForKey:key] box1] name];
    txt.tag = globalCounter;
    [tagDict addObject:[[(MyBigObject *)[theDict objectForKey:key] box1] name] forKey:[NSString stringWithFormat:@"%d",globalCounter]];
    globalCounter ++;
    [self.view addSubview:txt];
}

кудаglobalCounter являетсяint что я'м увеличивается каждый раз, когда я кладу что-то вtagDict так что я могу сохранить его уникальным. Я думаю, что в этом случае я мог бы просто использоватьNSArray и это будет работать так же хорошо, и, вероятно, выглядит немного чище. Мой план заключается в использованииtagDict в моемtestFieldDidEndEditing лайк:

- (void) textFieldDidEndEditing:(UITextField *)textField
{
    *[tagDict objectForKey:[NSString stringWithFormat:@"%d",textField.tag]] = textField.txt;
}

Это выдает ошибку дляAssigning to 'id' from incompatible type 'NSString *', Я'Я не совсем уверен, что это значит. Есть ли способ, которым я могу использоватьоператор разыменования изменить значение элемента, на который я указываю в своем словаре?

выдает ошибкуAddress expression must be an lvalue or a function designator, Я'Я все еще немного размышляю о том, как этот указатель будет работать в мире Objective C, и я думаю, чточто-то яЯ не совсем понимаю.

Ответы на вопрос(3)

Ваш ответ на вопрос