Bonjour.
Je me suis acheté le bouquin Cocoa par la pratique hier et j'essais d'améliorer son tuto pour faire un petite application de gestion de films.
Présentation du problème
J'ai déjà fait la base à savoir une classe Movie qui correspond a une classe de film (nom, directeur,note...)
J'ai écrit ma classe MyDocument et elle marche impec, gestion des NSTableView, sauvegarde des données...
Mon problème est que j'aimerais mettre un champ de recherche à la iTunes.
J'ai relié (IBAction)searchMovie: à mon NSSearchField.
J'ai tappé le code suivant
Il enlève normalement les films mais mon problème vient que losque je clique sur la croix du NSSearchFiled sans avoir fait de recherche ou que je délete les caracteres, il passe quand même dans la condition
if ([[sender stringValue] length] == 0)
Le truc c'est que s'il passe avant une recherche, tmpArray n'est pas initialisé (et alloué) et donc j'obtient une erreur de segmentation.
Ma question
Comment peut ont faire pour savoir si tmpArray existe déjà (est ce qu'il contient des films et auquel cas on doit réafficher)
Ou alors connaissez vous une méthode plus simple/rapide pour traiter mon problème.
J'espère être assez clair.
Je me suis acheté le bouquin Cocoa par la pratique hier et j'essais d'améliorer son tuto pour faire un petite application de gestion de films.
Présentation du problème
J'ai déjà fait la base à savoir une classe Movie qui correspond a une classe de film (nom, directeur,note...)
J'ai écrit ma classe MyDocument et elle marche impec, gestion des NSTableView, sauvegarde des données...
Mon problème est que j'aimerais mettre un champ de recherche à la iTunes.
J'ai relié (IBAction)searchMovie: à mon NSSearchField.
J'ai tappé le code suivant
Bloc de code:
- (IBAction)searchMovie:(id)sender
{
NSMutableArray *tmpArray;
NSString *stringSearch = [sender stringValue];
Movie *currentMovie;
int i;
if ([[sender stringValue] length] == 0) //Si clique sur cancel ou on delete
{
//Il faudrait savoir si tmpArray a déjà été alloué
} else { //Sinon on affiche tmpArray
tmpArray = [[NSMutableArray alloc] init]; //On initialise la liste de films
[tmpArray addObjectsFromArray:filmsArray];
NSLog(@"Liste des films %@",tmpArray);
for (i = 0 ; i < [filmsArray count] ; i++)
{
currentMovie = [filmsArray objectAtIndex:i];
if ( ! [[currentMovie filmName] rangeOfString:stringSearch options:NSCaseInsensitiveSearch].length)
{//Si le film n'est pas dans la recherche, on l'enlève
[filmsArray removeObjectAtIndex:i];
}
}
NSLog(@"Liste de film restant %@",filmsArray);
[tableView reloadData];
[self updateUI];
}
}
Il enlève normalement les films mais mon problème vient que losque je clique sur la croix du NSSearchFiled sans avoir fait de recherche ou que je délete les caracteres, il passe quand même dans la condition
if ([[sender stringValue] length] == 0)
Le truc c'est que s'il passe avant une recherche, tmpArray n'est pas initialisé (et alloué) et donc j'obtient une erreur de segmentation.
Ma question
Comment peut ont faire pour savoir si tmpArray existe déjà (est ce qu'il contient des films et auquel cas on doit réafficher)
Ou alors connaissez vous une méthode plus simple/rapide pour traiter mon problème.
J'espère être assez clair.