• 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 and +[NSExpression expressionForFunction:...]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Core Data and +[NSExpression expressionForFunction:...]


  • Subject: Re: Core Data and +[NSExpression expressionForFunction:...]
  • From: Alexander Spohr <email@hidden>
  • Date: Thu, 26 Nov 2009 08:34:16 +0100

Ron,

I am not sure if that works at all. I never fetched using methods that are not part of the database as a qualifier. Your code has to be very slow because it would need to fetch all Photos and then call distanceFromLatitude:longitude: on each.

Why not qualify directly using a bounding rect?
latitude > inLatitude - 0.1 && latitude < inLatitude + 0.1 &&
longitude > inLongitude - 0.1 && longitude < inLongitude + 0.1
The database can figure that out very fast.

	atze



Am 26.11.2009 um 02:08 schrieb Ron Aldrich:

> Hello All,
>
> I'm trying to query a Core Data database which contains geoLocation information for all of the objects of type "Photo" which are within a specified distance of a target point, using the following code.
>
> - (NSArray*) photosNearLatitude: (NSNumber*) inLatitude
>                      longitude: (NSNumber*) inLongitude
> {
>  NSExpression *theLHS = [NSExpression expressionForFunction: [NSExpression expressionForEvaluatedObject]
>                                                selectorName: @"distanceFromLatitude:longitude:"
>                                                   arguments: [NSArray arrayWithObjects:
>                                                               [NSExpression expressionForConstantValue: inLatitude],
>                                                               [NSExpression expressionForConstantValue: inLongitude],
>                                                               nil]];
>
>  NSExpression* theRHS = [NSExpression expressionForConstantValue: [NSNumber numberWithDouble: 0.1]];
>
>  NSPredicate* thePredicate = [NSComparisonPredicate predicateWithLeftExpression: theLHS
>                                                                 rightExpression: theRHS
>                                                                        modifier: NSDirectPredicateModifier
>                                                                            type: NSLessThanOrEqualToPredicateOperatorType
>                                                                         options: 0];
>
>  NSManagedObjectContext* theManagedObjectContext = [self managedObjectContext];
>
>  NSFetchRequest* theFetch = [[[NSFetchRequest alloc] init] autorelease];
>  theFetch.entity = [NSEntityDescription entityForName: @"Photo"
>                                inManagedObjectContext: theManagedObjectContext];
>  theFetch.predicate = thePredicate;
>
>  NSError* theError = NULL;
>  NSArray* theResults = [theManagedObjectContext executeFetchRequest: theFetch
>                                                               error: &theError];
>
>  return theResults;
> }
>
> The "Photo" class has the following selector.
>
> - (NSNumber*) distanceFromLatitude: (NSNumber*) inLatitude
>                         longitude: (NSNumber*) inLongitude
>
> My problem is that when I call "executeFetchRequest", an exception occurs:
>
> 2009-11-25 16:55:20.633 Serendipity[8498:a0f] Unsupported function expression FUNCTION(SELF, "distanceFromLatitude:longitude:" , 47.71283333333334, -122.225)
>
> -[Photo distanceFromLatitude:longitude:] is never called.
>
> Can anyone suggest what might be going wrong?
>
> - Ron Aldrich
>

_______________________________________________

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 and +[NSExpression expressionForFunction:...]
      • From: Ron Aldrich <email@hidden>
References: 
 >Core Data and +[NSExpression expressionForFunction:...] (From: Ron Aldrich <email@hidden>)

  • Prev by Date: Re: NSURLConnection retaining delegate?
  • Next by Date: [OT] Re: Looking for PCI card with IR transmitter ports and OS X drivers
  • Previous by thread: Core Data and +[NSExpression expressionForFunction:...]
  • Next by thread: Re: Core Data and +[NSExpression expressionForFunction:...]
  • Index(es):
    • Date
    • Thread