在iPhone项目中实现sqlite的Haversine函数
因此,经过一个小时的研究,我发现大多数人似乎都同意,当你有一个充满纬度和经度的数据库时,在iPhone项目中实现Haversine函数是一种方式,可以按距离排序结果。但是,在如何将它实际包含到您的项目中似乎没有什么帮助,而且我自己也没有运气 无论我将函数添加到ViewController.m文件的何处,我都会得到“*”标记之前的错误“在iPhone项目中实现sqlite的Haversine函数,iphone,objective-c,xcode,sqlite,haversine,Iphone,Objective C,Xcode,Sqlite,Haversine,因此,经过一个小时的研究,我发现大多数人似乎都同意,当你有一个充满纬度和经度的数据库时,在iPhone项目中实现Haversine函数是一种方式,可以按距离排序结果。但是,在如何将它实际包含到您的项目中似乎没有什么帮助,而且我自己也没有运气 无论我将函数添加到ViewController.m文件的何处,我都会得到“*”标记之前的错误“expected”)。有人提到您需要放置静态void distanceFunc(sqlite3\u context*context,int argc,sqlite3
expected”)。有人提到您需要放置静态void distanceFunc(sqlite3\u context*context,int argc,sqlite3\u value**argv)
到您的.h文件中,但我在那里也遇到了相同的错误
有人能提供一个在iPhone项目中包含此功能的简单示例吗?您可以使用此功能
+(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;
试试最新的
谢谢,你可以用这个
+(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;
试试最新的
谢谢,在.m
文件中的任何位置提供的链接中插入代码应该没有问题。如果在函数定义行中出现错误,则可能是编译器不知道什么是sqlite3\u上下文。这意味着您没有在.m文件中包含sqlite3.h
头。在.m
文件中任何位置提供的链接中插入代码应该没有问题。如果在函数定义行中出现错误,则可能是编译器不知道什么是sqlite3\u上下文。这意味着您没有在.m文件中包含sqlite3.h
头。好的,所以我的问题是没有使用#import
和没有将libsqlite3.0.dylib
框架添加到我的项目中。至于函数的放置位置,我把它放在控制器的.m
文件中的#import
标记和@synthesis
标记之间,就像它在博客文章中一样,所以我的问题是没有使用#import
和没有将libsqlite3.0.dylib
框架添加到我的项目中。至于从哪里放置函数,我将它放在我的#import
标记和控制器的.m
文件中的@synthetic
之间,就像它在博客文章中一样出现。遗憾的是,如果我将它放在头文件中,我会得到错误:预期的“;”在“(”token
,如果我用它来替换函数本身的.m文件中的静态void distanceFunc(sqlite3_context*context,int argc,sqlite3_value**argv)
行之前(当然,在最后去掉;
之后),我会得到错误:前面应该是“{”(“token
。如果我这样做,我会得到与符号\u sqlite3\u value\u type
,\u sqlite3\u reset\u null
,\u sqlite3\u value\u double
,以及\u sqlite3\u result\u double
相关的构建错误。您是否在应用程序中添加了sqlite框架。是否导入了它的头文件?您还尝试过用您的文件扩展名?从.m到.mm?是否正常?-1 sqlite3不知道Objective-C方法是什么。您无法将其作为sqlite3自定义函数传递。遗憾的是,如果我将其放入头文件中,我会得到错误:预期的“;”before”(“token
),如果我使用它来替换静态void distanceFunc(sqlite3_context*context,int argc,sqlite3_value**argv)
行,在函数本身的.m文件中(当然,在结束时去掉;
之后),我得到错误:之前应为“{”(“token
。如果我这样做,我会得到与符号\u sqlite3\u value\u type
,\u sqlite3\u reset\u null
,\u sqlite3\u value\u double
,以及\u sqlite3\u result\u double
相关的构建错误。您是否在应用程序中添加了sqlite框架。是否导入了它的头文件?您还尝试过用文件的扩展名?从.m到.mm?是否正常?-1 sqlite3不知道Objective-C方法是什么。无法将其作为sqlite3自定义函数传递。问题是我没有将libsqlite3.dylib
框架添加到项目中。问题是我没有添加libsqlite3.dylib
项目框架。