如何从NSMutableArray中获取数据取决于其中的内容?

时间:2012-02-16 07:26:37

标签: iphone objective-c ios4 nsmutablearray nsmutabledictionary

我的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 个答案:

答案 0 :(得分:2)

尝试使用NSPredicate以获得关键经验值_id = 1我不确定但是尝试它可以帮助你

答案 1 :(得分:2)

您可以使用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 :(得分:1)

您应该可以使用filteredArrayUsingPredicate:(来自NSArray)执行此操作,您必须创建一个NSPredicate来过滤所需的密钥。它返回一个包含匹配项的数组。 filterUsingPredicate中还有NSMutableArray删除与谓词不匹配的项目。