Hello.

I come from EOF bg, and i remember it was quite simple to let's say, ask a 
specific object to give me the max number of a entity  which was related to.

To make it clearer. 

Enity A  has a toMany relation with Entity B. 

entity B has a property called versionNumber.

So I want to get the next version number I must set for a new Entity B instance 
for the specific object, which in fact is to search for the max versionNumber 
of specificObject.toVersions.

So Inside Entity A class I created a method called nextVersionNumber, then I 
did the following:

   NSInteger vNumber = 0;

   NSFetchRequest *request = [[NSFetchRequest alloc] init];
   NSEntityDescription *entity = [NSEntityDescription 
entityForName:DPA_VERSION_KEY inManagedObjectContext:[self 
managedObjectContext]];
   [request setEntity:entity];

   // Specify that the request should return dictionaries.
   [request setResultType:NSDictionaryResultType];

   NSExpression *keyPathExpression = [NSExpression 
expressionForKeyPath:VERSION_NUMBER_KEY];
   NSExpression *maxNumberExpression = [NSExpression 
expressionForFunction:@"max:"
                                                                 
arguments:[NSArray arrayWithObject:keyPathExpression]];


   NSExpressionDescription *expressionDescription = [[NSExpressionDescription 
alloc] init];
   [expressionDescription setName:@"maxNumber"];
   [expressionDescription setExpression:maxNumberExpression];
   [expressionDescription setExpressionResultType:NSDecimalAttributeType];

   [request setPropertiesToFetch:[NSArray 
arrayWithObject:expressionDescription]];

   // Execute the fetch.
   NSError *error = nil;
   NSArray *objects = [[self managedObjectContext] executeFetchRequest:request 
error:&error];
   if (objects == nil) {
       // Handle the error.
   }
   else {
       if ([objects count] > 0) {
           vNumber = [[[objects objectAtIndex:0] valueForKey:@"maxNumber"] 
integerValue] +1;
       }
   }

   [expressionDescription release];
   [request release];

   return vNumber;

But of course this will fetch the Version Entity which has the max number, but 
this returned  object may not be one related to the specificObject.

SO I was trying using the keyword self. but then of course the app will 
complain/crash because self is  Invalid keypath element  due that Im fetching 
over an NSEntityDescription not on self.


what am I missing? how can get this required value?

Thx

Gustavo

_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to