Моя цель - получить массив, содержащий все имена файлов определенного расширения, но без расширения.
Там есть элегантное решение для получения всех имен файлов определенного расширения с использованием фильтра предикатов и инструкций о том, как разделить путь на имя файла и расширение , но чтобы объединить их, мне пришлось бы написать цикл (не страшно , но тоже не изящно).
Есть ли способ с Objective-C (может быть похож на механизм предикатов), чтобы применить некоторую функцию к каждому элементу массива и поместить результаты во второй массив, например, алгоритм transform
из C ++ STL делает?
Что я хотел бы написать:
// let's pretend 'anArray' was filled by querying the filesystem and not hardcoded
NSArray* anArray = [[NSArray alloc] initWithObjects:@"one.ext", @"two.ext", nil];
// that's what I liked to write (pseudo code)
NSArray* transformed = [anArray transform: stringByDeletingPathExtension];
// Yuji's answer below proposes this (which may be as close as you can get
// to my wish with Objective C)
NSArray* transformed = [anArray my_arrayByApplyingBlock:^(id x){
return [x stringByDeletingPathExtension];
}];