Ios 如何根据浮点值筛选NSmutableArray
我正在使用NScoding加载NSMutableArray;这加载得很好:Ios 如何根据浮点值筛选NSmutableArray,ios,objective-c,nsmutablearray,nspredicate,Ios,Objective C,Nsmutablearray,Nspredicate,我正在使用NScoding加载NSMutableArray;这加载得很好: _patients = [RND_PatientDB loadPatientData]; _NSMutableArray的每个对象都有一个名为“completed”的浮点 我尝试仅从NSmutableArray的“_pateints”中筛选具有_patients.completed==1的对象: NSNumber *num1 = [NSNumber numberWithFloat:1.0]; NSPredicate *
_patients = [RND_PatientDB loadPatientData];
_NSMutableArray的每个对象都有一个名为“completed”的浮点
我尝试仅从NSmutableArray的“_pateints”中筛选具有_patients.completed==1的对象:
NSNumber *num1 = [NSNumber numberWithFloat:1.0];
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"completed == %@", num1];
patientsFiltered = [[_patients filteredArrayUsingPredicate:sPredicate] mutableCopy];
我得到这个错误:
由于未捕获异常“NSUnknownKeyException”而终止应用程序,
原因:'[valueForUndefinedKey:]:此
类不符合已完成密钥的键值编码
有什么想法吗?如果您将“完成”定义为模型中的浮动,您应该使用
float num1 = 1.0f;
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"completed == %f", num1];
当您在数据模型中的NSNumber中包装了float时,下面是正确的
NSNumber *num1 = [NSNumber numberWithFloat:1.0];
我有一个疑问,什么是将完成定义为浮点而不是布尔?谢谢@bllakjakk我尝试了你的建议,但当我加载应用程序时,它仍然崩溃
2014-09-21 11:20:21.819轮[12492:583095]***由于未捕获的异常“NSUnknownKeyException”,终止应用程序,原因:'[valueForUndefinedKey:]:对于已完成的密钥,此类不符合键值编码。
根据您在注释中添加的日志:您使用了错误的密钥,或者您使用init而不是initWithEntity初始化了托管对象:inManagedObjectContext:。请使用NSMnagagedObject初始化代码的进一步部分编辑您的问题。还有拼写检查患者。谢谢@bllakjakk我通过使用NSPredicate*sppredicate=[NSPredicate predicateWithFormat:@“self.completed==%f”,num1]解决了这个问题代码>哪一个是正确的键。