Envoyé par
Fuotmad
Je comprend bien pour la méthode prepareForSegue.
Dans le DetailViewController.m je code donc la méthode setDetailItem.
Je m'en suis servis qu'une fois auparavant :
1 2 3 4 5 6 7 8 9
| - (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
} |
Mais je sais pas trop comment la modifié pour ce cas là...
J'ai regardé vite fait un livre pour prendre cet exemple. Et avec une petite recherche Google, on trouve la solution
@property (XXX, XXX) MyObject* detailItem;
Après il faut faire attention au recopie des attributs, etc..
Encapsulating Data
Après tu peux faire un code moins "moderne" avec juste un attribut pointeur. De toute façon, ce pointeur ne sert qu'à récupérer une adresse.
À moins que tu veuilles une recopie de ton objet
Envoyé par
Fuotmad
Après je choisi la technique du tableau simple :
je le crée dans la méthode également ? ou dans le viewDidLoad ??
- Dans le AppDelegate
- Dans un singleton, initialisé ... dans le AppDelegate
- En lazy quelque part...
L'avantage du singleton, c'est que que tu n'as pas besoin de passer pas l'attribut delegate (<- pas forcément le bon nom) de ton contrôleur avec un cast.
Et le mieux, c'est que le tableau doit être détruit et créer à chaque fois que l'application entre ou sort du "fond de tâche" (à moins que cela prenne du temps à voir )
Tout se passe dans le AppDelegate (ou ailleurs si tu le juges nécessaire).
1 2 3 4 5 6 7 8 9 10 11 12 13
|
list_objects = [[NSMutableArray alloc] init];
MyObject* tmpObject = nil;
tmpObject = [[MyObject alloc] initObjectWithName:@"CHRISTOPHE COLOMB" andID:10];
[list_objects addObject:tmpObject ];
[tmpObject release];
tmpObject = [[MyObject alloc] initObjectWithName:@"CHRISTOPHE COLOMB" andID:9];
[list_objects addObject:tmpObject ];
[tmpObject release];
.... |
Envoyé par
Fuotmad
et on crée un tableau des objets récupérés via setdetailitem ???
Non ce code c'est un peu n'importe quoi. Si on utilise un tableau (et non pas une base de donnée), il y a un tableau qui est en mémoire.
Si tu le mets dans un singleton, tu peux passer qu'un index de tableau (le numéro de la ligne), au lieu d'un pointeur.
Par contre avec une base de données tu es bien obligé de créer un objet avec les informations récupérées.
Surtout, il faut faire attention à la recopie des attributs, ou peut-être c'est ce que tu veux.
Envoyé par
Fuotmad
chaque objet 3 attributs STRING : 1 nom, 1 texte et 1 cheminImage
1 2 3 4
| while (...)
si objet.nom = cellule selectionée (isEqualToString)
alors texte = objet.texte
image = objet.cheminImage |
Si ton texte est trop long, tu peux faire une fonction, mais il faut faire attention au retour: autoreleasé ou pas versus weak/ strong avec ARC
Et donc tes objets n'auraient plus que 2 NSStrings. Et c'est ton contrôleur qui garde l'index du tableau.
Un bout de code en version sale, avec mon gros switch des familles
1 2 3 4 5 6 7 8 9 10 11 12 13
| -(NSString) get_text:(int) index {
switch(index) {
case 1:
return @"";
break;
case 2:
return @"";
break;
case 3:
return @"";
break;
}
} |
Exemple de singleton dans ma réponse, partie 2
Et tout ceci, juste pour te mettre le pied à l'étrier avant SQLite3 ou CoreData
Je te le redonne intégration Base de Données
Partager