cellForRowAtIndexPath: falha ao tentar acessar matrizes objectAtIndex: indexPath.row
Estou carregando dados para umUITableView
, de um costumeUITableViewCell
(classe própria e ponta). Funciona muito bem, até eu tentar acessar oobjectAtIndex:indexPath.row
para algumas matrizes.
Vou postar meu código primeiro, provavelmente será mais fácil para você entender o que quero dizer então.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil){
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[CustomCell class]]){
cell = (CustomCell *) currentObject;
break;
}
}
}
// Configure the cell...
NSUInteger row = indexPath.row;
cell.titleLabel.text = [postsArrayTitle objectAtIndex:indexPath.row];
cell.dateLabel.text = [postsArrayDate objectAtIndex:indexPath.row];
cell.cellImage.image = [UIImage imageWithContentsOfFile:[postsArrayImgSrc objectAtIndex:indexPath.row]];
return cell;
}
O estranho é que ele funciona quando é carregado nas três primeiras células (têm 130px de altura), mas trava quando tento rolar para baixo. (Aka, o log mostra três números antes de travar,0, 1, 2
)
Então, como um resumo, oobjectAtIndex:indexPath.row
executa 3 * 3 vezes com êxito, mas quando tento rolar para baixo no aplicativo, carregando em novas células, o aplicativo trava com o seguinte erro:
2010-05-30 14:00:43.122 app[2582:207] -[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x5a44bf0
2010-05-30 14:00:43.124 app[2582:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x5a44bf0'
// Stack
0 CoreFoundation 0x02398c99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x024e65de objc_exception_throw + 47
2 CoreFoundation 0x0239a7ab -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x0230a496 ___forwarding___ + 966
4 CoreFoundation 0x0230a052 _CF_forwarding_prep_0 + 50
5 myappname 0x00002ab1 -[HomeTableViewController tableView:cellForRowAtIndexPath:] + 605
Informações adicionais sobre as matrizes:
As matrizes são criadas no.h
Arquivo:
NSArray *postsArrayDate;
NSArray *postsArrayTitle;
NSArray *postsArrayComments;
NSArray *postsArrayImgSrc;
E preencheu oviewDidLoad:
:
NSURL *urlPosts = [NSURL URLWithString:@"http://mysite/myphpfile.php?posts=2"]; //returns data in this format: DATA1#Data1.1#data1.2~DATA2#data2.1#~ and so on,.
NSError *lookupError = nil;
NSString *data = [[NSString alloc] initWithContentsOfURL:urlPosts encoding:NSUTF8StringEncoding error:&lookupError];
postsData = [data componentsSeparatedByString:@"~"];
[data release], data = nil;
urlPosts = nil;
postsArrayDate = [[postsData objectAtIndex:2] componentsSeparatedByString:@"#"];
postsArrayTitle = [[postsData objectAtIndex:3] componentsSeparatedByString:@"#"];
postsArrayComments = [[postsData objectAtIndex:4] componentsSeparatedByString:@"#"];
postsArrayImgSrc = [[postsData objectAtIndex:5] componentsSeparatedByString:@"#"];
Como posso corrigir esta falha?