Est-il possible d'utiliser l'énumération rapide avec un NSArray contenant un NSDictionary?Énumération rapide avec un NSMutableArray qui contient un NSDictionary
Je suis en cours d'exécution à travers quelques tutoriels Objective C, et le code suivant kicks la console en mode GDB
NSMutableArray *myObjects = [NSMutableArray array];
NSArray *theObjects = [NSArray arrayWithObjects:@"easy as 1",@"easy as two", @"Easy as Three"];
NSArray *theKeys = [NSArray arrayWithObjects:@"A",@"B",@"C"];
NSDictionary *theDict = [NSDictionary dictionaryWithObjects:theObjects forKeys:theKeys];
[myObjects addObject:theDict];
for(id item in myObjects)
{
NSLog(@"Found an Item: %@",item);
}
Si je remplace la boucle d'énumération rapide avec une boucle de comptage classique
int count = [myObjects count];
for(int i=0;i<count;i++)
{
id item;
item = [myObjects objectAtIndex:i];
NSLog(@"Found an Item: %@",item);
}
L'application s'exécute sans accident, et le dictionnaire est sorti dans la fenêtre de la console.
Est-ce une limitation de l'énumération rapide, ou est-ce que je manque un peu de la langue? Y a-t-il d'autres pièges lors de l'imbrication de collections comme celle-ci?
Pour les points bonus, comment ai-je pu utiliser GDB pour le déboguer moi-même?
Ah, un de mes Cisms préférés. "La chose que vous pensiez fonctionner correctement n'aurait pas dû être". Merci pour le conseil des novices! –
Si vous activez -Wformat ("Typecheck appelle printf/scanf" dans Xcode), le compilateur en avertira. Si vous activez également -Werror ("Traiter les avertissements comme des erreurs" dans Xcode), le compilateur échouera la compilation sur cette erreur. –
Merci Peter, très utile! –