Core data 核心数据复杂SQL查询
我有以下sql查询,任何人都可以帮助我将其转换为NSPredicate以运行核心数据吗 想不出来Core data 核心数据复杂SQL查询,core-data,Core Data,我有以下sql查询,任何人都可以帮助我将其转换为NSPredicate以运行核心数据吗 想不出来 SELECT title, address1, ( 6371 * acos( cos( radians(36.414376) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(28.155212) ) + sin( radians(36.414376) ) * sin( radians( latitude )
SELECT title, address1, ( 6371 * acos( cos( radians(36.414376) )
* cos( radians( latitude ) ) * cos( radians( longitude ) - radians(28.155212) )
+ sin( radians(36.414376) ) * sin( radians( latitude ) ) ) )
AS distance
FROM main
HAVING distance < 0.5
ORDER BY distance
选择标题,地址1,(6371*acos(弧度(36.414376))
*cos(弧度(纬度))*cos(弧度(经度)-弧度(28.155212))
+sin(弧度(36.414376))*sin(弧度(纬度)))
作为距离
从主要
距离小于0.5的
按距离排序
纬度和经度在主体中是双倍的
非常感谢你的帮助 简而言之,你不能 核心数据和预测不允许您执行数学运算 但是,您可以编写一个
NSPredicate
,返回框中的每个地址
您需要做的是预先计算最小纬度和经度以及最大纬度和经度
然后,您的预测变成:
CGFloat minLat = ...;
CGFloat maxLat = ...;
CGFloat minLong = ...;
CGFloat maxLong = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(latitude < %f AND latitude > %f) AND (longitude < %f AND longitude > %f)", minLat, maxLat, minLong, maxLong];
CGFloat minLat=。。。;
CGFloat maxLat=。。。;
CGFloat minLong=。。。;
CGFloat maxLong=。。。;
NSPredicate*谓词=[NSPredicate谓词格式:@“(纬度<%f和纬度>%f)和(经度<%f和经度>%f)”,minLat,maxLat,minLong,maxLong];
根据该查询的结果,您可以缩小到一个圆圈内,以删除角落中的项目。简而言之,你不能 核心数据和预测不允许您执行数学运算 但是,您可以编写一个
NSPredicate
,返回框中的每个地址
您需要做的是预先计算最小纬度和经度以及最大纬度和经度
然后,您的预测变成:
CGFloat minLat = ...;
CGFloat maxLat = ...;
CGFloat minLong = ...;
CGFloat maxLong = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(latitude < %f AND latitude > %f) AND (longitude < %f AND longitude > %f)", minLat, maxLat, minLong, maxLong];
CGFloat minLat=。。。;
CGFloat maxLat=。。。;
CGFloat minLong=。。。;
CGFloat maxLong=。。。;
NSPredicate*谓词=[NSPredicate谓词格式:@“(纬度<%f和纬度>%f)和(经度<%f和经度>%f)”,minLat,maxLat,minLong,maxLong];
根据该查询的结果,您可以缩小到一个圆圈内,以删除角落中的项目。盒子的底部