Je suis un peu perplexe et j'espère que quelqu'un pourra m'aider. J'ai une liste de dictionnaires. J'essaie de le lire dans une table. Le plist ressemble à ceci:Accéder aux données d'un tableau de dictionnaires contenant un tableau
<array>
<dict>
<key>sectionTitle</key>
<string>A</string>
<key>rowData</key>
<array>
<dict>
<key>Title</key>
<string>Albert Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Antony Author</string>
<key>dText</key>
<string>Descriptive text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Azerifiel Author</string>
<key>dText</key>
<string>Text for detail view</string>
</dict>
</array>
</dict>
<dict>
<key>sectionTitle</key>
<string>B</string>
<key>rowData</key>
<array>
<dict>
<key>Title</key>
<string>Barny Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Bazle Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Bruno Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
</array>
</dict>
</array>
Mon problème est le suivant: je peux faire une structure similaire moins les tableaux alimenter une vue de la table, mais je ne peux pas le code ci-dessus avec le travail de tableaux. Je ne suis pas sûr de savoir comment traiter les tableaux dans le code, mais je ne peux pas m'en débarrasser parce que je veux que la table finale soit indexée et sectionnée. Voici le code de ma méthode viewDidLoad.
- (void)viewDidLoad {
[super viewDidLoad];
// Path to the plist (in the application bundle)
NSString *path = [[NSBundle mainBundle] pathForResource:@"Tester" ofType:@"plist"];
// Build the array from the plist
NSArray *dictArray = [[NSArray alloc] initWithContentsOfFile:path];
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
for(NSDictionary *dict in dictArray)
{
DictModel *term = [[DictModel alloc] init];
term.sectionTitle = [dict objectForKey:@"sectionTitle"];
term.Title = [dict objectForKey:@"Title"];
term.dText = [dict objectForKey:@"dText"];
[mutableArray addObject:term];
[term release];
}
tableDataSource = [[NSArray alloc] initWithArray:mutableArray];
[mutableArray release];
[dictArray release];
[super viewDidLoad];
}
J'ai une classe distincte appelée DictModel qui ressemble à ceci:
@interface DictModel : NSObject {
NSString *sectionTitle;
NSString *Title;
NSString *dText;
}
@property(nonatomic, retain) NSString *sectionTitle;
@property(nonatomic,retain) NSString *Title;
@property(nonatomic, retain) NSString *dText;
@end
Où vais-je tort? J'ai essayé d'importer les tableaux mais je n'ai pas pu le faire fonctionner. Je Figure que je ne comprends pas quelque chose quelque part. Les conseils sont très appréciés.
Voici ma cellule pour la méthode des lignes. Cela pourrait être l'endroit où le problème d'affichage est. J'ai ajouté ceci à la demande d'un comentator:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
DictModel *term = [tableDataSource objectAtIndex:indexPath.row];
cell.textLabel.text = term.Title;
cell.detailTextLabel.text = term.dText;
return cell;
}
Alors, quel est le problème exactement? Avez-vous actuellement une erreur ou avez-vous besoin d'instructions sur la façon de générer votre plist dans un tableau indexé et groupé? –
Ma table apparaît vide. Mais je sais que j'accède au plist ok parce qu'il va révéler la chaîne sectionTitle si je pointe la méthode rowAtIndex. en général, j'essaie de me faire une idée des plistes et de les commander/charger pour le moment. –
Les méthodes de source de données de votre vue de table sont-elles appelées? – Ideveloper