我有一个T-SQL背景,所以这个CoreData的东西对我来说有点新鲜。
我正在构建一个应用程序原型,最终将使用MS SQL后端Web服务进行查询。
在我的后端,我的t-sql查询将是这样的:
SELECT *, SQRT(SQUARE(myX - latitude) + SQUARE(myY - longitude)) Distance
FROM Locations
WHERE latitude > myX
AND latitude < myX + deltaX
AND longitude > myX
AND latitude < myY + deltaY
ORDER BY SQRT(SQUARE(myX - latitude) + SQUARE(myY - longitude))
如何使用谓词在我的原型中在CoreData中执行相同的查询(如果那是最好的方法)
N.B。它更多的是我感兴趣的订单
答案 0 :(得分:3)
首先,要意识到Core Data首先是一个对象层次结构。因此,您不请求列,您请求对象。
有了这个,你可能希望构造一个带有NSFetchRequest
的{{1}},并且谓词将是:
NSPredicate
您也可以向[NSPredicate predicate withFormat:@"latitude > %@ AND latitude < %@ AND
longitude > %@ and longitude < %@", someFloatObject1, someFloatObject2,
someFloatObject3, someFloatObject4];
添加排序,但您无法在排序中进行计算。因此,您可能希望在获取对象后执行排序。
您可以在对象上拥有瞬态属性,然后使用类似'-updateDistanceCalFrom:someFloat`的方法。然后,使用一组对象,您可以执行以下操作:
NSFetchRequest