我已經創建了一個測試項目,學習如何使用Core Data。我所做的是,創建兩個實體:許多核心數據查詢只顯示1條記錄
- 客戶
- 名
- 關係 - >項目(一對多的關係)
- 名
- 項目
- 項目
- 關係 - >客戶
- 項目
我已創建2 UITableViewControllers一個顯示所有客戶端和一個將顯示與該客戶的所有項目。
爲了證明我創造了這個方法,所有相關的項目:
-(NSArray *)relatedProjects:(Client *)client; { NSFetchRequest *request = [[NSFetchRequest alloc]init]; NSEntityDescription *e = [[model entitiesByName] objectForKey:@"Project"]; [request setEntity:e]; [request setPredicate:[NSPredicate predicateWithFormat:@"SELF IN %@", client.projects]]; NSSortDescriptor *sd = [NSSortDescriptor sortDescriptorWithKey:@"project" ascending:YES]; [request setSortDescriptors:[NSArray arrayWithObject:sd]]; NSError *error; NSArray *result = [context executeFetchRequest:request error:&error]; if (!result) { [NSException raise:@"Fetch failed" format:@"Reason: %@", [error localizedDescription]]; } relatedProjects = [[NSMutableArray alloc] initWithArray:result]; //return result; return relatedProjects;
}
唯一的問題是,是將只顯示1個項目,而不是所有的相關項目。 如果我忽略這一行,則會顯示所有項目,但是項目和客戶之間沒有關係。
[request setPredicate:[NSPredicate predicateWithFormat:@"SELF IN %@", client.projects]];
(我的測試用例,我創建1個客戶端的幾個項目,所以我知道它應該表現出更多的則1個項目)
所以我堅持如何解決這個問題,因爲有幾個可能性,這是爲什麼不工作:
- 謂詞不是客戶和項目之間確定
- 關係也不行
- 等
所以,如果有任何人誰可以給我一些指點,那將是巨大的。
你設定的反比關係?爲什麼不只是返回'[client.projects allObjects]'? – 2013-04-23 18:31:06
[client.projects allObjects]給出完全相同的輸出,所以只返回1條記錄。我如何設置反比關係?我認爲這是自動設置的? – Eloy 2013-04-23 18:34:34
如果你的意思是在檢查員中設置inversie關係,那麼我已經完成了。 – Eloy 2013-04-23 18:36:37