Probleme sur addobject dans un Table View
Rvb33
Membre
Bonjour,
je me suis inspiré d'un tuto qui me semble bien fait:
http://www.tutomobile.fr/liste-et-details-creer-une-application-multivues-23-tutoriel-iphone-n°9/17/02/2011/
Mais lorsque je le le saisie sous Xcode 4 j'ai un problème au moment de l'addObject avec un plantage SIGABRT et le message suivant:
‘-[__NSArrayI addObject:]: unrecognized selector sent to instance
Dans addButtonPressed si je supprime la ligne "addView.tabWebSites = self.tabWebSites;" ça ne plante pas mais bien entendu rien ne se passe après
Voyez vous do'u ça peux venir?
Merci de votre aide
je me suis inspiré d'un tuto qui me semble bien fait:
http://www.tutomobile.fr/liste-et-details-creer-une-application-multivues-23-tutoriel-iphone-n°9/17/02/2011/
Mais lorsque je le le saisie sous Xcode 4 j'ai un problème au moment de l'addObject avec un plantage SIGABRT et le message suivant:
‘-[__NSArrayI addObject:]: unrecognized selector sent to instance
// Ajouter le site web<br />[tabWebSites addObject:newSite]; // c'est ici que ça plante<br />[newSite release];<br /> <br />[self dismissModalViewControllerAnimated:YES];
Dans addButtonPressed si je supprime la ligne "addView.tabWebSites = self.tabWebSites;" ça ne plante pas mais bien entendu rien ne se passe après
- (IBAction) addButtonPressed: (id) sender {<br /> ModifViewController *addView = [[ModifViewController alloc] initWithNibName:@"ModifViewController" bundle:nil];<br /> <br /> // On passe le tableau de sites pour que la nouvelle vue puisse le modifier<br /> addView.tabWebSites = self.tabWebSites; // ICI UN PETITE ERREUR DANS LE CODE CORRECTION CI-DESSOUS<br /> addView.websites = self.tabWebSites<br /><br /> UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:addView];<br /> [self presentModalViewController:navc animated:YES];<br /> [addView release];<br /> [navc release];<br />}
Voyez vous do'u ça peux venir?
Merci de votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais NSMutableArray, si.
Le message d'erreur dit clairement que NSArray ne connait pas addObject.
Car c'est NSMutableArray qui connait addObject.
Mince, je me suis fait griller.
Le message retourne bien NSArray....
MAIS
dans ce cas précis tous sont déclarés comme NSMutableArray....
Alors d'où vient la boulette???
NSMutableArray *tabWebSites;
NSMutableArray *webSites
écrit sous xcode 3 tout va bien mais sous xcode 4 j'ai ce problème......
Quoiqu'il en soit, déjà un grand merci à ceux qui m'ont répondu et vont j'espère me répondre à nouveau
- (IBAction) save: (id) sender {
// Récupérer un NSUrl à partir de la valeur du champ texte
NSURL *urlSite = [[NSURL alloc] initWithString:urlTextField.text];
// Créer un nouveau site et affecter les valeurs
Website *newSite = [[Website alloc] init];
newSite.webSiteTitle = titleTextField.text;
newSite.webSiteURL = urlSite;
newSite.webSiteDescription = descriptionTextField.text;
// Ne pas oublier de libérer le NSUrl qu'on vient de créer
[urlSite release];
[tabWebSites addObject:newSite];
[newSite release];
[self dismissModalViewControllerAnimated:YES];
}
Bizarre non?
#import UIKit/UIKit.h
@interface Website : NSObject {
NSString *webSiteTitle;
NSURL *webSiteURL;
NSString *webSiteDescription;
}
@property (nonatomic,retain) NSString *webSiteTitle;
@property (nonatomic,retain) NSURL *webSiteURL;
@property (nonatomic,retain) NSString *webSiteDescription;
- (id) initWithDictionaryFromPlist: (NSDictionary *) dictionnary;
@end
Le tableau n'est rempli qu'avec addObject ou non ?
Ensuite dans une seconde view je vais renseigner les champs puis je fais un addobject pour ajouter les nouveaux éléments à mon tableau. comme je fais d'habitude.
// Créons un tableau temporaire que nous allons remplir avec un objet Website par NSDictionnary contenu dans le fichier .plist
// Notez l'utilisation de NSEnumerator pour parcourir un tableau
NSMutableArray *annotationToAdd = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [arrayFromFile objectEnumerator];
NSDictionary *anObject;
while ((anObject = [enumerator nextObject])) {
Annotations *ws = [[Annotations alloc] initWithDictionaryFromPlist: anObject];
[annotationToAdd addObject: ws];
[ws release];
}
avant il s'agissait de "Navigation Based Application" mais sous xcode 4.2 ce choix n'est plus possible.
merci
Sinon cela ne motive pas pour répondre.
Je suis parti sur un autre projet pour me faire les dents plus doucement.
En tout cas un grand merci de votre aide efficace et sympa
D'autant plus que tu n'as pas répondu à Ali qui t'a demandé comment était écrit l'alloc de tabWebSites,
ni à ma dernière question qui était comment passes-tu de "annotationToAdd" à "tabWebSites" ?
Mais bon ceci dit, c'est vrai que, parfois, laisser un problème en plan quelques temps, permet de revenir avec des idées plus claires et de trouver la solution.
Merci pour les encouragements à continuer.