2013-03-21 38 views
0

的數據結合擷取結果我有三個表:任務,問題,分配,問題核心數據 - 通過兩個表

分配表將與像它的ID,標題等信息的分配

問題表將保存分配問題並且具有諸如問題ID,問題標題,問題文本等屬性。

問題表沒有分配ID作爲屬性,因爲爲了避免在多個問題表中作爲多個分配可以共享相同的屬性題。

作業和問題通過名爲作業的表格相關聯,作業具有作業ID和問題ID。

例如:可以說,分配1具有ID 1,2 3問題,並在3

在這種情況下,既問題和分配 - 問題表將有3項

接着,作業2有3個帶有ID 4,5和1的問題(與作業1相同)

在這種情況下,問題表將包含5個條目(1個問題在作業1和2中都是通用的),而作業問題將有6個條目。 3分別用於作業1和2)

在這種情況下,我想要創建一個提取控制器,以按順序將其添加到Assignment-Questions表中,以獲取與賦值2有關的所有問題。

我不是很確定如何編寫一個謂詞和排序描述符,其中結果是通過維護oder結合兩個表。我嘗試了很少的排列和組合,沒有任何東西似乎對我有用。請幫我提一些建議。

+0

而不是這樣做,也許你可以創建並保存添加到表中的問題數組,然後檢索該數組。 – AMayes 2013-03-21 23:41:04

+1

我可以給你一個謂詞,但不是一個排序描述符。 - 獲取和排序* AssignmentQuestion *對象更容易。那可能是另一種選擇嗎? – 2013-03-22 11:35:10

+0

Martin,我的視圖控制器完全基於獲取控制器實現。據我所知,我們不能創建一個沒有排序描述符的獲取控制器。有什麼想法嗎? – Subhash 2013-03-22 12:21:04

回答

0

@MartinR是正確的。您在連接表上進行操作。我在一些字段名猜測和這樣的,代碼是未經測試的過程,但它應該讓你去:

fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"AssignmentQuestion"]; 
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"question.order" ascending:YES]]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"assignment = %@", assignment]; 
fetchRequest.relationshipKeyPathsForPrefetching = @[@"question"]; 

然後在你的VC,你可以在FRC操作AssignmentQuestion對象:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    Question* question = [[_fetchedResultsController objectAtIndexPath:indexPath] question]; 
    ... 
}