У меня есть массив списка ALAsset URL. Я хочу преобразовать этот URL в ALAsset один за другим и добавить его в новый массив.NSMutableArray addObject в блоке дает нулевой массив
Вот мой код:
-(void)retrieveAssetsWithArray:(NSArray *)assetsArray
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Background work
__block NSMutableArray *retrievedAssetsArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [assetsArray count]; i++)
{
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:[NSURL URLWithString:[assetsArray objectAtIndex:i]]
resultBlock:^(ALAsset *asset)
{
if (asset)
{
NSLog(@"assetss: %@", asset);
[retrievedAssetsArray addObject:asset];
NSLog(@"assets arayyyy: %@", retrievedAssetsArray);
}
}
failureBlock:^(NSError *error)
{
NSLog(@"Error: Cannot load asset - %@", [error localizedDescription]);
}
];
}
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI
if ([self.delegate respondsToSelector:@selector(getRetrievedAssetsFromPhotoLibrary:)])
{
NSLog(@"retrievedAssetsArray :%@", retrievedAssetsArray);
[self.delegate getRetrievedAssetsFromPhotoLibrary:retrievedAssetsArray];
}
});
});
}
Часть преобразовать URL в ALAsset работает нормально. Но retrievedAssetsArray
возвращается, как это, когда я пытаюсь его регистрации в dispatch_async(dispatch_get_main_queue()
:
retrievedAssetsArray :(
"ALAsset - Type:Unknown, URLs:(null)",
"ALAsset - Type:Unknown, URLs:(null)",
"ALAsset - Type:Unknown, URLs:(null)",
"ALAsset - Type:Unknown, URLs:(null)"
)
Почему это происходит? Может кто-нибудь, пожалуйста, скажите мне, как я могу это исправить? Приветствия.
не могу вам сказать много без источника для 'getRetrievedAssetsFromPhotoLibrary'. –