1

我已經設置了一個數據模型,其中學生實體的名稱與Subject有一對多的關係。他參加的每個主題都有許多班級時報。核心數據在一對多關係中排序

下面的代碼根據學生姓名對它進行排序,這很簡單。

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    // Edit the sort key as appropriate. 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

我想要做的就是對它進行排序,以便它在每個學生需要參加的下一個班級時間排序。因此,顯示屏將顯示爲學生,並按照下一課的時間進行排序。有任何想法嗎?

我已經試過以下

[fetchRequest setEntity:[NSEntityDescription entityForName:@"Student" inManagedObjectContext:managedObjectContext]]; 
    [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(subjects.time > %@)", [NSDate date]]]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 

我得到錯誤「‘一對多這裏不允許鑰匙’」,然後,我嘗試setRelationshipKeyPathsForPrefetching:但沒有取到多的關係的科目。有任何想法嗎?

回答

0

這是過程:

試試這個。取學生。然後,對於每個學生,從Class獲取'時間','大於或等於當前時間'給學生(以謂詞格式),按'時間'排序。顯示細節。如果你把它放在一個循環中,你有你的答案。

+0

'time'是Class的一個屬性。所以流程應該像從學生那裏獲取'名字'一樣。從班級獲取該學生的所有'時間'。排序'時間'以查找下一個上課時間(從現在開始)。然後根據下一個上課時間對所有學生進行排序。 – munchine 2010-10-06 00:52:41

+0

@munchine是正確的。 – Jordan 2010-10-06 03:23:26

+0

我很努力地得到這個工作的代碼,因此這個問題,有人可以幫助我嗎? – munchine 2010-10-06 05:20:36