NSMutableArray - Запросить элементы без перечисления? - PullRequest
7 голосов
/ 15 июня 2009

Используя LINQ в .Net, я могу выбирать элементы из массива, которые соответствуют определенным критериям, то есть из массива People:

var cleverPeople = People.Where(o=>o.IQ>110);

Есть ли что-нибудь подобное, что я могу сделать с NSMutableArray? В нем много предметов, и перечисление его с помощью цикла довольно дорого с точки зрения производительности.

Ответы [ 4 ]

7 голосов
/ 15 июня 2009
4 голосов
/ 07 марта 2013

Я создал простую библиотеку под названием Linq to ObjectiveC , которая представляет собой набор методов, обеспечивающих интерфейс запросов в стиле Linq. В вашем случае вам нужен Linq-to-ObjectiveC, где метод:

NSArray* peopleWhoAreSmart = [people where:^BOOL(id person) {
    return [[person iq] intValue] > 110;
}];

Возвращает массив людей с IQ> 110.

0 голосов
/ 02 мая 2014

Конечно, в эти (10,6+) дней у нас есть хорошие API, такие как indexOfObjectPassingTest, для таких вещей, как

var smartPeople = [People indexesOfObjectsPassingTest:^BOOL(id person, NSUInteger idx, BOOL *stop)
                  {  return person.iq > 110; } ];
0 голосов
/ 15 июня 2009

Другим вариантом будет использование Сообщения более высокого порядка для реализации выбора. Например,

NSArray* cleverPeople = [[People select] greaterIQ:110];

Где moreIQ будет методом категории для людей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...