似乎没有关于此在线的任何内容,我需要按距离用户当前位置排序运行提取查询。我的第一个计划是要建立一个短暂的财产......是否可以在核心数据中使用自定义的sqlite函数?
- (CLLocationDistance)distance {
return [self.location distanceFromLocation:locationManager.location];
}
但后来我发现核心数据将不能获取基于瞬态特性,我认为可能是如此,因为提取所变成了带有ORDER BY子句的SELECT语句,因此我的距离属性需要存在于数据库中。
好了,所以我的第二个想法是实现这一目标的方式,我在使用与sqlite3_create_function创建的自定义功能的SQLite SQLite的使用没有核心日期的另一个项目做了一样的...
static void sqliteDistance(sqlite3_context *context, int argc, sqlite3_value **argv) {
if(sqlite3_value_type(argv[0])==SQLITE_NULL || sqlite3_value_type(argv[1])==SQLITE_NULL) {
sqlite3_result_null(context);
} else {
sqlite3_result_double(context, [locationManager.location distanceFromLocation
[[CLLocation alloc] initWithLatitude: sqlite3_value_double(argv[0]) longitude: sqlite3_value_double(argv[1])]]);
}
}
现在问题是我将如何从核心数据提取查询中调用此函数?我猜它可能不可能,因为核心数据的目的是抽象出支持存储的细节,但也许有人知道不同?
你的问题是“你可以使用自定义的SQLite函数与核心数据NSSQLiteStoreType”。这将是一个不。你试图完成的任务,将核心数据结果排序到已知位置的距离是很有可能的,但这将是一个不同的问题。 – quellish 2014-08-25 18:55:36
@quellish是对的。为什么不使用没有核心数据的SQLite,顺便说一句? – kelin 2014-08-26 08:40:31