核心数据/范围更新

时间:2011-09-23 21:46:51

标签: ios ios4 core-data

这是一个简单的mySQL请求:

UPDATE myTable SET X=X-1 WHERE (X>100)

现在我的问题是这样的。 我如何在Core Data中写一个类似的请求?

我开始在Core Data中找到自己的方式;但是上面SQL命令的最后一部分给出了我在Core Data中的问题。

换句话说:我如何处理WHERE (X>100)部分。

如果mySQL请求只涉及一条记录,我会使用这样的东西:

[matchItem setValue:VALUE forKey:@"X"];

但是,如果是一系列记录,我该怎么办,就像这里一样,我想对X> 100的所有记录执行一些操作。

1 个答案:

答案 0 :(得分:3)

使用NSPredicate并将其添加到NSFetchRequest

NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"X > %@", [NSNumber numberWithInt:100]];

遍历结果数组并根据需要设置值。

for (NSManagedObject *match in resultsArray) {
    NSInteger newValue = [[match objectForKey:@"X"] intValue] +1;
    [match setValue:[NSNumber numberWithInt:newValue] forKey:@"X"];
}