2014-09-21 43 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