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 (Cocoa-dev@lists.apple.com) 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 arch...@mail-archive.com