NSMutableArray bekommen [__NSCFString count]: unrecognized selector geschickt Instanz
Ich brauche Hilfe...
Wenn ich versuche, um die Anzahl der Zellen für Abschnitt mit einem NSMutableArray, bekomme ich [__NSCFString count]: unrecognized selector geschickt Instanz 0x6d567e0
Dies geschieht, wenn ich "rows = [[searchProfile objectAtIndex:Abschnitt] Anzahl];"
Hier ist der 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;
}
Und die Methode, fügt strings in "searchedProfile" array:
- (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;
}
Danke !
InformationsquelleAutor Razvan | 2012-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es aussieht bist du mit dem
count
Methode für NSArray auf ein NSString, was nicht erlaubt ist. Speichern Sie NSStrings im arraysearchedProfile
, und es sieht aus wie Sie möchten, um herauszufinden, die Länge eines Strings. Also statt:Hierzu:
Was ich tun möchte, ist diese: nehmen Sie einen Wert aus einem NSDictionary speichern, speichern Sie Sie in einem string speichern Sie die Zeichenfolge in einem NSMutableArray (searchedProfile) verwenden Sie, dass array-Indizes, um das Ergebnis (den string(s) aus dem array) in einer tableView.
wenn Sie absichtlich speichern
NSString
s insearchedProfile
warum sind Sie dann aufrufencount
auf Sie? Ich meine, was Zahl, die Sie werden versuchen, die von Ihnen abgeleitet werden, um berechnen Sie die Anzahl der Zeilen?Carl hat Recht. Es ist unklar, was der Zweck der Berufung 'count' auf den Saiten ist. Ohne die Informationen, die schwer zu ermitteln, eine Lösung für Sie.
Nein, diese Antwort trifft den Punkt. Er ruft diese in numberOfRowsInSection, so er will ganz offensichtlich der Graf von etwas, nicht die Länge einer Zeichenfolge-es ist nur, dass er "etwas falsch..
InformationsquelleAutor pasawaya
[searchedProfile objectAtIndex:Abschnitt] zurückkehren wird string als Objekt im searchedProfile "string", denn dies ist, wie u hinzugefügte Objekt vor
und zählen nicht die Eigenschaft definiert, für die NSString. Wie auch immer, es scheint, Sie wollen, um zurückzukehren Anzahl der Objekte(d.h. die Zahl der birthnames gespeichert in der searchedProfile array ) als die Anzahl der Zeilen in der Tabelle, versuchen Sie, diese
InformationsquelleAutor Neo
Behalten "searchedProfile" array by doing: searchedProfile = [[NSArray array] retain];
InformationsquelleAutor Raghunandan R