2014-09-21 45 views
-1

我正在使用NScoding加载NSMutableArray;这个就好加载了:如何根据float过滤NSmutableArray

_patients = [RND_PatientDB loadPatientData]; 

的_Patients NSMutableArray中的每个对象都有一个称为“已完成”浮动。

我尝试从具有_patients.completed == 1 “_pateints” 的NSMutableArray中仅筛选的对象:

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

我得到这个错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key completed.

任何想法?

+1

我有疑问,我们可以定义完成为float而不是bool吗? – bllakjakk 2014-09-21 12:16:30

回答

-1

在您定义“完成”作为漂浮在型号的情况下,你应该使用

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

下面是正确的,当你在的NSNumber数据模型包裹浮动。

NSNumber *num1 = [NSNumber numberWithFloat:1.0]; 
+0

谢谢@bllakjakk我试过了你的建议,它在我加载应用程序时仍然崩溃 '2014-09-21 11:20:21.819轮[12492:583095] ***由于未捕获异常'NSUnknownKeyException',终止应用程序,原因:'[ valueForUndefinedKey:]:该类不是完成密钥的密钥编码兼容密钥值。' – 2014-09-21 15:21:14

+0

根据您在注释中添加的日志:您使用的密钥不正确,或者初始化管理对象init代替initWithEntity:inManagedObjectContext :. **请用NSMnagagedObject初始化代码**的更多部分编辑您的问题。也拼写检查病人。 – bllakjakk 2014-09-21 15:28:07

+0

谢谢@bllakjakk我通过使用'NSPredicate * sPredicate = [NSPredicate predicateWithFormat:@“self.completed ==%f”,num1]解决了这个问题;'这是正确的密钥。 – 2014-09-21 21:08:26