亞歷山大,
如果這些機構都沒有關係對方你需要excecute不同擷取要求抓住你的數據。
因此,舉例來說,你可以抓住最新Message
建立類似如下的要求:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"senderEmail == %@", grabbedEmail];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"insertionDate" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSFetchRequest *messageFetch = [[NSFetchRequest alloc] init];
[messageFetch setEntity:[NSEntityDescription entityForName:@"Message" inManagedObjectContext:yourContext]];
[messageFetch setPredicate:predicate];
[messageFetch setSortDescriptors:sortDescriptors];
[messageFetch setFetchLimit:1];
要檢索grabbedEmail
(如果你沒有的話),你需要設置的請求與一個具體的謂詞。接收方電子郵件也可以應用相同的方法。例如。
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"userId == %@", @"someUserId"];
NSFetchRequest* userFetch = [[NSFetchRequest alloc] init];
[userFetch setEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:yourContext]];
[userFetch setPredicate:predicate];
[userFetch setFetchLimit:1];
NSArray* userResults = [userFetch executeFetchRequest:&error];
User* retrievedUser = (User*)[userResults objectAtIndex:0];
NSString* grabbedEmail = [retrievedUser email];
按日期排序,你可以簡單地添加到Message
enitity的屬性稱爲insertionDate
(的NSDate
型),允許您按日期排序。
當執行請求
NSArray* results = [messageFetch executeFetchRequest:&error];
陣列results
將包含你正在尋找的(僅)Message
元件。
爲什麼你需要維護單獨的這些實體?
希望有所幫助。
感謝您的支持!我需要分別維護這些實體,因爲我的模型包含比上述三個實體更多的實體。我不想擁有一個與所有實體之間都有關係的巨大網狀模型。所以我認爲,將一些關係建模爲提取的屬性可能會更好... – Alexander
@Alexander不客氣,如果您發現日期建議有用,也可以upvote。 :-) –