• 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: CoreData modeling a mutable attribute set for an entity
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CoreData modeling a mutable attribute set for an entity


  • Subject: Re: CoreData modeling a mutable attribute set for an entity
  • From: Jesse Grosjean <email@hidden>
  • Date: Tue, 3 Jan 2006 12:48:38 -0500

In a Fetch Requestion, you can, however, use any of an entity's properties - including its relationships, not just its attributes - so since you have a relationship from Entry to EntryAttribute, you can create a single predicate using keypaths based on the relationship name. So, using your example, you could create a format string something like:

entryAttributes.value = 'foo'

or

entryAttributes.value = $VALUE

If I understand what you want, that should work to allow you to fetch Entry entities based on the EntryAttributes it contains.

Yes that's what I'm trying to do. This predicate on the key works (because all EntryAttributes have a key of type string):


NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY entryAttributes.key like 'name'"];

But if I try to query values:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY entryAttributes.value like 'name'"];

it fails giving me this error "Can't do regex matching on object 1."

I think the reason is because the concrete subclass entities of my EntryAttribute entity have different types for the value key. For example EntryStringAttribute has a string typed value while EntryBooleanAttribute has a boolean typed value. But the query machinery doesn't know about this and fails when it runs into a typed value that it doens't understand.

Here's the code that I'm using to set up my test.

NSManagedObject *entry = [NSEntityDescription insertNewObjectForEntityForName:@"Entry" inManagedObjectContext:managedObjectContext];
NSManagedObject *booleanAttribute = [NSEntityDescription insertNewObjectForEntityForName:@"EntryBooleanAttribute" inManagedObjectContext:managedObjectContext];
NSManagedObject *stringAttribute = [NSEntityDescription insertNewObjectForEntityForName:@"EntryStringAttribute" inManagedObjectContext:managedObjectContext];

[booleanAttribute setValue:@"status" forKey:@"key"];
[booleanAttribute setValue:[NSNumber numberWithBool:YES] forKey:@"value"];

[stringAttribute setValue:@"name" forKey:@"key"];
[stringAttribute setValue:@"jesse" forKey:@"value"];

[[entry mutableSetValueForKey:@"entryAttributes"] addObject:booleanAttribute];
[[entry mutableSetValueForKey:@"entryAttributes"] addObject:stringAttribute];


I'm guessing that their isn't a strait forward way to query this. But I'd still like to know if anyone has suggestions on where to go next.

PS, in the model screenshot that I posted

	http://www.hogbaysoftware.com/files/deletememutableattributeset.png

The entryAttributes relationship should really be a to many relationship. That's what I'm using for my tests.

Thanks,
Jesse
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: CoreData modeling a mutable attribute set for an entity
      • From: Jeff LaMarche <email@hidden>
References: 
 >CoreData modeling a mutable attribute set for an entity (From: Jesse Grosjean <email@hidden>)
 >Re: CoreData modeling a mutable attribute set for an entity (From: Jeff LaMarche <email@hidden>)

  • Prev by Date: Re: NSArrayController
  • Next by Date: Re: CoreData modeling a mutable attribute set for an entity
  • Previous by thread: Re: CoreData modeling a mutable attribute set for an entity
  • Next by thread: Re: CoreData modeling a mutable attribute set for an entity
  • Index(es):
    • Date
    • Thread