将sqlite的Haversine函数实现到iPhone项目中

时间:2011-04-13 15:45:29

标签: iphone objective-c xcode sqlite haversine

经过一个小时的研究后,我发现大多数人似乎都同意http://www.thismuchiknow.co.uk/?p=71的功能是将一个Haversine功能实现到iPhone项目中的方法,以便在你按距离排序结果时有一个充满纬度和经度的数据库。关于如何在项目中实际包含它似乎没什么帮助,而且我自己没有运气。

无论我在哪里将函数添加到我的ViewController.m文件中,都会收到错误expected ')' before '*' token。有些人提到你需要将static void distanceFunc(sqlite3_context *context, int argc, sqlite3_value **argv);放入.h文件中,但我也会遇到同样的错误。

有人能提供一个在iPhone项目中包含此功能的简短示例吗?

3 个答案:

答案 0 :(得分:0)

你可以使用它,

+(void)distanceFunc(sqlite3_context *context, int argc, sqlite3_value **argv);

或将viewController文件的.m扩展名更改为.mm。(您也可以尝试这个)

<强>更新

+(void)distanceFunc:(sqlite3_context *)context arg1:(int)argc arg2:(sqlite3_value **)argv;

尝试更新一个。

谢谢,

答案 1 :(得分:0)

.m文件中的任何位置插入代码时,应该没有问题。如果您在函数定义行中收到错误,则编译器可能不知道sqlite3_context是什么。这意味着您没有在.m文件中包含sqlite3.h标题。

答案 2 :(得分:0)

好的,所以我的问题是不使用#import <sqlite3.h>而不是将libsqlite3.0.dylib框架添加到我的项目中。至于从http://www.thismuchiknow.co.uk/?p=71放置函数的位置,我将它放在我的控制器的#import文件中的@synthesize标记和.m之间,就像在博客中一样交。