Мой проект, LINQ4Obj-C , портирует стандартные операторы запросов LINQ на Objective-C.
Вы можете найти его на github и его документах здесь . Эта библиотека также доступна через CococaPods .
Исходный код этого проекта доступен по стандартной лицензии MIT.
Ваш пример будет выглядеть так:
id results = [[[people linq_where:^BOOL(id person) {
return ([person ID] == 1);
}] linq_select:^id(id person) {
return [person name];
}] linq_orderByAscending];
NB Я удалил второе условие (ID! = 2), так как оно бессмысленно.
На данный момент библиотека предоставляет методы расширения (категории) для классов коллекции, но в будущем я также расширю ее функциональность до NSManagedObjectContext
, чтобы обеспечить прямой доступ к основным данным.