• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Core Data request predicates and to-many relationships
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Core Data request predicates and to-many relationships


  • Subject: Re: Core Data request predicates and to-many relationships
  • From: Luke Evans <email@hidden>
  • Date: Mon, 8 Dec 2008 14:47:19 -0800

Thanks for the reply Melissa - much appreciated.

I was beginning to toy with the idea of trying a function expression (which I have used before for other purposes) to isolate an individual attribute object and perform the several comparisons therein.
Presumably SUBQUERY, being designed for the job, benefits from some performance advantages over the function approach(?).


Regards

Luke



On 8-Dec-08, at 2:07 PM, Melissa J. Turner wrote:


On Dec 6, 2008, at 01:45, Luke Evans wrote:

If there are any NSPredicate gurus out there, I'm scratching my head on this one:

I have an entity that can optionally have a set of attributes (name- value pairs). This is set up in the model as a optional to-many relationship to an attribute entity.
Now, I want to fetch the list of managed objects of this entity whose attributes exactly match a dictionary that is passed. The predicate for this needs to filter the objects that have all the required attributes; matching both the name, and value for each attribute.


At this point I'm not seeing how you can code this in a predicate. If I AND some clauses like:
...ANY attr.name == %@ AND ANY attr.value == %@...
for each attribute I'm testing for, then AFAICS I'm not testing that the _same_ attr has the name and value.


I wondered about:
...ANY (attr.name == %@ AND attr.value == %@)...
but this doesn't appear to be legal syntax.

I'm still experimenting, but if anyone knows how to express a query that allows multiple clauses on the _same_ entity across a to-many relationship I'd appreciate a clue!

Cheers

Luke

If you're targetting 10.5 or later, there's a subquery expression in the predicates that was added to support this kind of query. The syntax for what you're doing would be:


SUBQUERY(toMany, $each, $each.name == %@ AND $each.value = %@).@count > 0

Note that this is on the list of expensive predicate operations, so it should be towards the end of a compound predicate.

Cheers,
+Melissa



_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Core Data request predicates and to-many relationships
      • From: "Melissa J. Turner" <email@hidden>
References: 
 >Core Data request predicates and to-many relationships (From: Luke Evans <email@hidden>)
 >Re: Core Data request predicates and to-many relationships (From: "Melissa J. Turner" <email@hidden>)

  • Prev by Date: Re: NSTask
  • Next by Date: Re: Weird behavior of mouse location when performing a drag
  • Previous by thread: Re: Core Data request predicates and to-many relationships
  • Next by thread: Re: Core Data request predicates and to-many relationships
  • Index(es):
    • Date
    • Thread