Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone项目中实现sqlite的Haversine函数_Iphone_Objective C_Xcode_Sqlite_Haversine - Fatal编程技术网

在iPhone项目中实现sqlite的Haversine函数

在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

因此,经过一个小时的研究,我发现大多数人似乎都同意,当你有一个充满纬度和经度的数据库时,在iPhone项目中实现Haversine函数是一种方式,可以按距离排序结果。但是,在如何将它实际包含到您的项目中似乎没有什么帮助,而且我自己也没有运气

无论我将函数添加到ViewController.m文件的何处,我都会得到“*”标记之前的错误“
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
项目框架。