Question

J'utilise le cadre AssetsLibrary pour récupérer tous les groupes d'actifs dans l'iPhone. J'ai quelques extrait de code comme ceci:

NSMutableArray *groups = [[NSMutableArray alloc] initWithCapacity:5];
void (^groupEnumerator)(ALAssetsGroup*, BOOL*) = ^(ALAssetsGroup *group, BOOL *stop) {
    if(group != nil) {
        NSLog(@"Adding group %@", [group valueForProperty:ALAssetsGroupPropertyName]);
        [groups addObject:group];
    }
};

ALAssetsLibrary* library = [AssetsManager defaultAssetsLibrary];
[library enumerateGroupsWithTypes: ALAssetsGroupSavedPhotos
    usingBlock:groupEnumerator
    failureBlock:^(NSError * err) {NSLog(@"Erorr: %@", [err localizedDescription]);}];

Et j'ai trouvé un comportement bizarre:

1) Quand je lance mon application dans le simulateur iOS (commande + R utilisation dans Xcode), le groupEnumerator sera exécuté et les noms de groupe sera imprimé dans la console

2) J'ai écrit un certain test unitaire pour mon application, quand je lance le test unitaire (commande use + U dans Xcode), qui appelle l'extrait de code ci-dessus comme on l'appelle dans mon application, le groupEnumerator semble pas exécutée à tous et aucun du nom du groupe sera imprimé, et failureBlock ne sont pas appelés aussi, et je ne suis pas d'erreur lors de l'exécution des tests, mais l'énumération du groupe ne fonctionne pas comme il le fait dans l'application.

Je vérifie la documentation d'Apple, et je sais que cette méthode (enumerateGroupsWithTypes: usingBlock: failureBlock :) est asynchrone, cependant, même si j'attends depuis longtemps dans mon test unitaire, je ne vois pas le groupEnumerator s'exécuter <. / p>

Je teste contre iOS 5.0 avec Xcode 4.2.

Toute aide est appréciée. Merci.

Était-ce utile?

La solution

Stuck on this problem for several days, couldn't figure out the exact cause of this issue.

And instead of using OCUnit in Xcode 4, I had to switch to use gh-unit, which solves this issue actually. It seems related with the way Xcode 4 runs the test target.

http://gabriel.github.com/gh-unit

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top