2013-07-22 3 views
2

У меня есть NSArray, заполненный 200 000 слов, где каждое слово может иметь 1-10 символов. Я хотел бы создать второй массив на основе первого, содержащий только слова, имеющие ровно 5 символов.Найти все строки в NSArray, которые являются определенной длиной

Как мне это сделать?

ответ

2

Используйте predicate для filter the array и создать новый массив, содержащий только те слова, длина которых равна 5. Что-то вроде:

NSPredicate *p = [NSPredicate predicateWithFormat:@"length == 5"]; 
NSArray *fiveCharWords = [myWordList filteredArrayUsingPredicate:p]; 

Я всегда кажется, чтобы получить predicate format немного неправильно в первый раз, так что не» Не удивляйтесь, если есть ошибка. Дело в том, что вы должны прочитать NSPredicate и узнать, как вы можете использовать предикаты для фильтрации коллекций, таких как массивы и наборы.

+1

Спасибо за это! Я буду искать в NSPredicate для получения дополнительной информации. –

1

Фильтр массива с предикатом, где предикат сравнивает length с 5. Или зациклируйте и скопируйте соответствующие значения в другой массив.

0

Используя вашу модель данных, я бы использовал For Loop и проанализировал данные, и когда я найду объект в массиве Array1 с длиной> 5, я бы передал его Array2. Я бы также начал с поискового запроса NSArray и For Loop в отношении ObjectiveC.

Использование другой модели данных Я бы выбросил все данные Array1 в базу данных SQLLite, чтобы ваше приложение выполнялось намного быстрее.

+0

спасибо, это была моя оригинальная идея. База данных SQLLite кажется хорошим вариантом для изучения. Благодаря! –

+0

Маршрут SQLLite имеет свои преимущества и недостатки и может быть чрезмерным, если у вас есть статический набор данных, но это еще один вариант. Я полагаю, что более уместным объяснением является то, насколько важна ваша работа. Если вы предварительно загружаете данные в приложение, SQLLite имеет смысл. Если вы загружаете приложение с данными, я лично использовал бы метод SQLLite. Если данные предварительно загружены в массив каким-то образом, я бы пропустил SQLLite, так как вам все равно придется разбирать его, и он легко может просто выбросить его в Array2. Аналогичный вопрос о том, являются ли данные статическими или динамическими. – Dan

Смежные вопросы