2012-03-05 17 views
0

也就是說,我有一個與實體B具有多對多關係的實體A.除其他屬性外,B實例還有一個creationDate。而且我在內存中已經有一個A的託管對象。如何基於B的屬性之一從A到B的多對多關係中獲取特定的B管理對象?

所以我知道我可以通過A的訪問者訪問所有B實例。但我想這樣做的線沿線的東西:

「在A.relationshipName所有學士學位,最近B.creationData返回的管理對象爲B」我怎麼會去它?

回答

0

或者,由於您已經在內存中擁有託管對象A,因此您可以執行內存中已過濾的A - >> B關係。

A *inMemoryA = ... 

id byDate = [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]; 
id sorters = [NSArray arrayWithObjects:byDate, nil]; 
NSArray *sortedBs = [inMemoryA allBs] sortedArrayUsingDescriptors:sorters]; 

B *mostRecentB = [sortedBs lastObject]; 
1

如何執行其他讀取請求:

假設關係的名字在一個一對多側的一個是a

// 1 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"B" 
              inManagedObjectContext:self.managedObjectContext]; 
fetchRequest.entity = entity; 

// 2 
fetchRequest.fetchLimit = 1; 

// 3 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"self.a = %@", previouslyFetchedAObject]; 

// 4 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" 
                   ascending:NO]; 

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
fetchRequest.sortDescriptors = sortDescriptors; 

用簡單的英語

  1. 爲B提出新的獲取請求
  2. 將取上限,所以你只返回1個對象
  3. 設置一個謂語,只有拉回那些爲已經進賬對象
  4. 設置順序日期降序讓你得到第一
最新日期的關係的對象
相關問題