Existe uma maneira de vincular automaticamente um UITextField a uma variável no meu modelo de dados?

Eu estou construindo um controlador de visão onde estou adicionando um monte deUITextFields para a minha opinião de forma programática. Eu quero pré-preencher os campos de texto com algum texto que estou carregando do CoreData, mas permitir que o usuário entre e mude o texto, se quiser. Em seguida, preciso voltar e salvar o novo texto de volta no CoreData novamente, além de executar cálculos usando o novo valor. O salvamento e o carregamento em si não são um problema, mas estou procurando uma boa maneira de rastrear o que o usuário mudou.

No passado, fiz isso com o.tag propriedade doUITextField e atextFieldDidEndEditing: delegate method. O problema é que eu vou ter dezenas de campos de texto nessa visão - o suficiente para que eu não consiga lembrar.tag pertence a qual variável no meu modelo. Ter que voltar para procurar a tag que eu atribuí quando criei será uma dor, e a coisa toda parece realmente propensa a erros. Além disso, vou criar os campos de texto em vários loops diferentes, de modo que obter uma marcação única para cada campo de texto quando for criado será difícil (talvez impossível?).

O que eu estou procurando é uma maneira de "amarrar" o UITextField a uma variável no meu modelo quando eu o criar e só saber a partir desse ponto, sempre que o usuário atualizar esse campo de texto, o valor que eu especificar no meu modelo será instantaneamente atualizado para ser usado em cálculos futuros e salvando de volta no CoreData quando o usuário sair da tela. Existe uma maneira de fazer isso?

EDIT 1: Outra coisa a notar é que o meu modelo em si é meio complexo. Eu tenho vários costumes diferentesNSObject subclasses que estão segurando partes diferentes dos meus dados. Alguns dos objetos têm propriedades que são eles próprios outros objetos personalizados. Eu também tenho dicionários onde os valores serão instâncias de alguns dos objetos personalizados.

Por exemplo, eu posso ter esses objetos:

MySmallObject1, que tem propriedadesname,sizeevalue (todosNSStrings)MySmallObject2, que tem propriedadesdate ecost (aNSDate e umNSNumber)MyBigObject, que tem propriedadesbox1 ebox2 (que sãoMySmallObject1 eMySmallObject2 instâncias, respectivamente)theDict, que é umNSDictionary instância que temMyBigObjects como valores

Então, quando estou construindo meus campos de texto, eu posso estar realmente descendo por uma árvore que seria algo como:

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

Nesse caso, preciso saber quando o usuário altera o texto em qualquer um dostxt e atualize o valor apropriado através da árvore.

EDIT 2: Ao tentar implementar a sugestão de @ Till nos comentários, comecei a ler umtutorial sobre ponteiros em C. Parece que esta é a maneira que eu preciso ir, mas eu estou lutando para obter o& e* do mundo C para jogar bem com as subclasses NSObject que mencionei no meu último EDIT do mundo Objective-C. Para que a sugestão de @ Till funcione, acho que preciso armazenar de alguma forma a localização da memória do meu valor nessa complicada árvore de objetos. Então meu bloco de código do último EDIT se tornaria:

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

OndeglobalCounter é umint que estou incrementando toda vez que coloco algo emtagDict então eu posso mantê-lo único. Eu acho que neste caso eu poderia simplesmente estar usando umNSArray e funcionaria tão bem, e provavelmente pareceria um pouco mais limpo. Meu plano é usartagDict no meutestFieldDidEndEditing gostar:

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

Isso gera um erro paraAssigning to 'id' from incompatible type 'NSString *'. Eu não tenho certeza do que isso significa. Existe uma maneira que eu possa usar um "operador de desreferenciação" para alterar o valor do item que estou apontando no meu dicionário?

lança um erroAddress expression must be an lvalue or a function designator. Ainda estou um pouco confuso sobre como essa coisa de ponteiro funcionaria no mundo do Objective C, e acho que há algo que não entendo completamente.

questionAnswers(3)

yourAnswerToTheQuestion