如何使用NSPredicate过滤Core Data中的记录

时间:2010-06-28 07:06:19

标签: iphone objective-c core-data

我在带有字符串数据类型的coredata模型中有amount属性。我需要通过比较金额来查找记录。我已经尝试了NSPredicate,但没有任何结果,结果总是空的。

NSDecimal result;
NSScanner *theScanner = [[NSScanner alloc] initWithString:@"10.00"];
[theScanner scanDecimal:&result];
[theScanner release];



 [request setPredicate:[NSPredicate predicateWithFormat:@"amount > %@",[NSDecimalNumber decimalNumberWithDecimal:result]]];
 NSError* error = nil;
 NSArray* records = [managedObjectContext executeFetchRequest:request error:&error];
 NSLog(@"%@",records);

请记住,我将数值存储在coredata中的字符串数据类型中。以下是我正在分析数据的一些例子。

Examples: -12.00, +30.00 etc.

我知道在字符串类型中存储十进制值并不好,但我没有找到在coredata属性中存储负数或正数的好方法。如果有任何好的方法,请告诉我。

1 个答案:

答案 0 :(得分:2)

只需使用Decimal数据类型的金额(与Objective-C中的NSDecimalNumber类相对应)。