Alassetslibrary enumerategroupswithtypes не возвращает данные
-
27-10-2019 - |
Вопрос
Я использую Framework Assetslibrary для извлечения всех групп активов на iPhone. У меня есть какой -то фрагмент кода, как это:
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]);}];
И я нашел странное поведение:
1) Когда я запускаю свое приложение в симуляторе iOS (используйте команду + r в Xcode), будет выполнен графический ролик, и имена групп будут напечатаны в консоли
2) Я написал какой -то модульный тест для своего приложения, когда я запускаю модульный тест (используйте команду + U в XCode), который вызывает приведенный выше фрагмент кода, как его называют в моем приложении, группа, похоже, вообще не выполняется, и нет. Имя группы будет напечатано, и сбой Block тоже не вызывается, и я не получаю никакой ошибки при выполнении тестов, но перечисление группы не работает, как это происходит в приложении.
Я проверяю документацию Apple, и я знаю этот метод (EnumerateGroupSwithTypes: с использованием Block: affblock :) асинхронно, однако, даже если я долго жду в своем модульном тесте, я не вижу, чтобы GroupEnumerator выполняется.
Я тестирую против iOS 5.0 с XCode 4.2.
Любая помощь ценится. Спасибо.
Решение
Застрял в этой проблеме в течение нескольких дней, не смог выяснить точную причину этой проблемы.
И вместо использования окунита в Xcode 4 мне пришлось переключиться на использование GH-Unit, что на самом деле решает эту проблему. Похоже, что это связано с тем, как Xcode 4 запускает тестовую цель.