Применить FilterArrayUsingPredicate к определенному столбцу многомерного NSMutableArray - PullRequest
3 голосов
/ 12 октября 2011

У меня есть многомерный изменяемый массив, который содержит различные объекты в каждом измерении.

Позиция 1 = foodID int, Позиция 2 = itemName NSString

есть.

   Row 1     [1, "Jif"];    
   Row 2     [2, "Skippy"];
   Row 3     [3, "Peter Pan"];

Когда я пытаюсь использовать следующий код ниже, он выдает исключение, потому что он пытается оценить позицию 1 как строку

//---get all Peanut Butter Types beginning with the letter---
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];    
NSArray *beginWith = [food filteredArrayUsingPredicate:predicate];

Исключение

'NSInvalidArgumentException', reason: 'Can't do a substring operation with something that isn't a string'

Может ли кто-нибудь помочь с тем, как я могу фильтровать, используя предикат определенного столбца многомерного массива?

Существуют различные примеры этого с NSDictionary, где его можно применить к ключу, но я не могу применить его к определенной позиции в массиве.

1 Ответ

0 голосов
/ 11 сентября 2015

Вы пытаетесь найти или отфильтровать массив, используя предикат, в котором ваш основной массив источника данных («еда») имеет вид массива. И в вашей формуле Predicate пытается найти строковый объект, но в массиве «food» каждый объект имеет массив, поэтому он был разбит и не смог отфильтровать массив. Надеюсь, вы поймете из этого комментария.

...