这是一个简单的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的所有记录执行一些操作。
答案 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"];
}