Как получить данные из NSMutableArray в зависимости от содержимого в нем? - PullRequest
0 голосов
/ 16 февраля 2012

У меня NSMutableArray, как показано ниже

Как я могу получить только те данные, которые имеют experience_id=1 или обновить эти данные?

Есть ли другой способ без циклической обработки?*

(
            {
            "exp_achievements" = "get certificate for best employee";
            "exp_achive_id" = 1;
            "experience_id" = 1;
        },
    {
            "exp_achievements" = "get certificate for best employee test";
            "exp_achive_id" = 3;
            "experience_id" = 1;
        },
            {
            "exp_achievements" = test2;
            "exp_achive_id" = 5;
            "experience_id" = 3;
        }
    )

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Вы можете использовать NSPredicate для фильтрации коллекций:

NSMutableArray *a = [NSMutableArray arrayWithObjects:
                         [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:@"experience_id"],
                         [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:2] forKey:@"experience_id"], nil];
NSPredicate *f = [NSPredicate predicateWithFormat:@"experience_id == 1"];
[a filterUsingPredicate:f];

отпечатков:

f:(
        {
        "experience_id" = 1;
    }
)

Если значением 'experience_id' является строка, измените формат на @"experience_id.intValue == 1"

2 голосов
/ 16 февраля 2012

Попробуйте с NSPredicate со значением ключа experience_id = 1, я не уверен, но попробовать это может помочь вам

1 голос
/ 16 февраля 2012

Вы должны быть в состоянии сделать это, используя filteredArrayUsingPredicate: (из NSArray), вам нужно создать NSPredicate, который фильтрует по вашему желаемому ключу для этого.Возвращает массив с совпадающими элементами.Также в NSMutableArray есть filterUsingPredicate, которые удаляют элементы, не соответствующие предикату.

...