我是xcode / iOS / Objective-C和sqlite的新手。我正在尝试自学基础知识 - 我想使用sqlite3包装器“sqlite3_exec”进行选择查询。出于某种原因,我找不到任何人这样做的简单例子。
基本上,该方法有一个回调函数的参数(第三个):
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
没关系。我对回调并不陌生。但是,我似乎无法正确地获得语法。我接管了我的iPad(iOS 5.1)xcode(4.3)项目中的一个视图控制器,并进行了如下所示的更改:
#import "SecondViewController.h"
#import "sqlite3.h"
#import "AppState.h"
@interface SecondViewController ()
@end
@implementation SecondViewController
- (int)myCallback:(void *)a_parm argc:(int)argc argv:(char **)argv column:(char **)column
{
return 0;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//grab questionnaire names
char *sql = "select * from QST2Main order by [Name]";
char *err = nil;
sqlite3 *db = [[AppState sharedManager] getgCn];
sqlite3_exec(db, sql, myCallback, nil, &err);
}
本质上,我希望在首次加载此视图时运行查询,以存储一些数据供以后使用。但是,XCode不喜欢底部的“myCallback”用法。它说: 未声明使用标识符'myCallback。'
该方法在头文件中声明,我甚至尝试将其设置为静态。似乎没有什么能让这个错误消失。我知道我必须在这里做一些根本错误的事情,但对于我的生活,我无法弄清楚是什么 - 我甚至无法找到这个领域的其他代码样本,可以帮助我弄清楚我缺少的东西。 / p>
非常感谢!
答案 0 :(得分:6)
回调需要是C函数。尝试
int myCallback(void *a_parm, int argc, char **argv, char **column)
{
return 0;
}