2017-02-07 2 views
0

Avec l'aide de joliment écrit TJBinder je suis en mesure d'accrocher une vue dans DTO ou la classe du modèle.Liaison de données Dual/Bidireactional en Objective-C en utilisant `TJBinder`

Comme par exemple,

// Retrieve your data object from an external resource here 
    Fruit* fruit = [Fruit new]; 
    fruit.name = @"apple"; 
    fruit.color = [UIColor redColor]; 

    // Tell the root view what is its data object 
    self.view.dataObject = fruit; 

Mais maintenant, quand il y a une mise à jour de l'interface utilisateur UITextField dire être mis à jour, alors comment puis-je lier que dans la classe de modèle?

Jusqu'à présent, j'essayé,

//Now say user typed "orange" instead of "apple" in a text field. 
    //After a button action 
    fruit = self.view.dataObject; 
    NSLog(@"%@", fruit.name); //-> returns old object itself. DTO not updated after changing view. 

Toute aide grandement appréciée!

Répondre

0

Actuellement TJBinder a updateView communiquer

Modèle - To-> Voir

Pour atteindre

Voir - To-> Modèle

J'ai ajouté méthode supplémentaire updateModel dans "TJBinder.h"

Cette méthode effectuera une boucle sur tous les objets TJBindEntry et définira la valeur de l'objet du modèle à partir du chemin de la vue clé.

-(void)updateModel{ 

    for (TJBindEntry* entry in self.bindings) 
    { 
     [self updateBindingEntryForView:entry]; 
    } 
} 

-(void) updateBindingEntryForView:(TJBindEntry*)entry 
{ 

    id extractedValue = [entry.view valueForKey:entry.viewKey]; 

    [self.dataObject setValue:extractedValue forKey:entry.dataObjectKeyPath]; 
} 

Refer here is complete code in my Gist