如何根据float过滤NSmutableArray

时间:2014-09-21 11:22:04

标签: ios objective-c nsmutablearray nspredicate

我正在使用NScoding加载NSMutableArray;加载就好了:

_patients = [RND_PatientDB loadPatientData];

_Patients NSMutableArray的每个对象都有一个名为“completed”的浮点数。

我尝试仅过滤来自具有_patients.completed == 1的“_pateints”的NSmutableArray中的对象:

NSNumber *num1 = [NSNumber numberWithFloat:1.0];
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"completed == %@", num1];
patientsFiltered = [[_patients filteredArrayUsingPredicate:sPredicate] mutableCopy];

我收到此错误:

  

由于未捕获的异常'NSUnknownKeyException'而终止应用,   原因:'[valueForUndefinedKey:]:这个   对于完成的密钥,class不符合密钥值编码。

有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

如果您在模型中将'completed'定义为float,则应使用

float num1 = 1.0f;
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"completed == %f", num1];

当你在数据模型中的NSNumber中包装float时,下面的描述是正确的。

NSNumber *num1 = [NSNumber numberWithFloat:1.0];