NSMutableArray arriver [__NSCFString count]: unrecognized sélecteur envoyé à l'instance
J'ai vraiment besoin d'aide...
Lorsque j'essaie d'obtenir le nombre de cellules de la section à l'aide d'un NSMutableArray, je reçois [__NSCFString count]: unrecognized sélecteur envoyé à l'instance 0x6d567e0
Ce qui se passe lorsque j'utilise "rows = [[searchProfile objectAtIndex:section] count];"
Voici le code:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"1");
//_________ Return the number of sections ________
int sections = 0;
if (tableView == self.tableView)
{
sections = 2;
}
if (tableView == self.searchDisplayController.searchResultsTableView)
{
sections = [searchedProfile count];
}
return sections;
}
/* ------------------------------------------ Set The Number Of Cells for Each Section ------------------------------- */
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"2");
//_________ Return the number of rows in the section. ________
int rows = 0;
if (tableView == self.tableView)
{
if (section == 0) {
rows = userProfile.count;}
else {
rows = profiles.count;}
}
if (tableView == self.searchDisplayController.searchResultsTableView)
{
rows = [[searchedProfile objectAtIndex:section]count];
}
return rows;
}
Et la méthode qui insère les chaînes en "searchedProfile" tableau:
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
searchedKeys = [NSMutableArray array];
searchedProfile = [NSMutableArray array];
searchedData = [NSMutableDictionary dictionary];
[searchedProfile removeAllObjects];
[searchedData removeAllObjects];
[searchedKeys removeAllObjects];
NSDictionary *profile;
for (profile in profiles)
{
NSString *birthname;
NSString *currentname;
NSString *photopath;
NSDate *birthdate;
for (birthname in profile)
{
birthname = [profile objectForKey:@"birthname"];
currentname = [profile objectForKey:@"currentname"];
photopath = [profile objectForKey:@"profilepic"];
birthdate = [profile objectForKey:@"birthdate"];
NSRange nameRange = [birthname rangeOfString:searchString options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound)
{
[searchedProfile addObject:birthname];
[searchedData setObject:birthname forKey:@"birthname"];
[searchedData setObject:currentname forKey:@"currentname"];
[searchedData setObject:photopath forKey:@"profilepic"];
[searchedData setObject:birthdate forKey:@"birthdate"];
if ([birthname isEqualToString:[profile objectForKey:@"birthname"]])
break;
}
}
}
NSLog(@"SEARCHED PROFILES: %@", searchedProfile);
NSLog(@"SEARCHED DATA:%@", searchedData);
NSLog(@"SEARCHED KEYS:%@", searchedKeys);
NSLog(@"count test: %d", searchedProfile.count);
return YES;
}
Merci !
Vous devez vous connecter pour publier un commentaire.
On dirait que vous êtes à l'aide de la
count
méthode pour NSArray sur un NSString, qui n'est pas autorisé. Vous magasin NSStrings dans le tableausearchedProfile
, et il semble que vous voulez savoir la longueur d'une chaîne. Ainsi, au lieu de cela:Ce faire:
NSString
s danssearchedProfile
alors pourquoi faites-vous appel àcount
sur eux? Je veux dire, quel numéro êtes-vous essayer de tirer d'eux pour calculer votre nombre de lignes?[searchedProfile objectAtIndex:section] sera de retour à cordes que l'objet de searchedProfile est une chaîne parce que c'est la façon dont u objet ajouté avant de
et compter n'est pas la propriété est définie pour NSString. De toute façon, il semble que vous voulez retourne le nombre d'objets(i.e. le nombre de birthnames stockées dans le searchedProfile tableau ) que le nombre de lignes dans la table, essayez cette
Conserver "searchedProfile" tableau en faisant: searchedProfile = [[NSArray tableau] retain];