簡體   English   中英

CoreData-使用關系對象獲取請求

[英]CoreData - Fetch request with relationship object

請確認我是否理解正確...

想象有一個實體“人”和一個實體“ credit_card”。 因此, 一個 “人”可以擁有許多 “信用卡”。

人員實體具有以下屬性: 名稱:STRING年齡:INT和關系: 信用卡 (對很多)相反

並且信用卡實體具有: card_number:INTvalid_date:DATE且關系: card_user (對一個)反

在我的代碼中,我有一個稱為fe Person * currentUser的特定人員(ManagedObject)。 如果我現在想使用特定的“ valid_date”獲取該特定人員的所有信用卡,則將創建帶有以下謂詞的獲取請求(針對實體“ credit_card”):

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:
@"valid_date == <NSDate object>"];

NSPredicate *predicate2 = [NSPredicate predicateWithFormat:
@"ANY card_user like currentUser"];

這個謂詞對我來說很好,但這是正確的方法嗎? 我真的應該問:“任何關系名稱,ManagedObject ”嗎?

如果我正確理解了您想要的內容,那么您所要做的就是使用Person *currentUser上的creditcards屬性並將其過濾掉:

NSSet *setOfCreditCards = currentUser.creditcards;
NSPredicate *filter = [NSPredicate predicateWithFormat: @"valid_date == %@", date];
NSSet *cardsWithValidDates = [setOfCreditCards filteredSetUsingPredicate:filter];

之所以告訴CoreData有關關系,是為了避免從頭開始進行另一個查詢。

如果已正確設置核心數據模型,則無需使用ANY關鍵字。 具體來說,信用卡需要與該人對象恢復人際關系(如果未這樣做,您將得到警告)。 然后,您可以將兩個謂詞合並為一個

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"person == %@ AND valid_date == %@", currentUser, valid_date];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM