gpt4 book ai didi

objective-c - 如何在 iOS 5.1 上将回调函数传递给 sqlite3_exec?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:54 25 4
gpt4 key购买 nike

我是 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) 项目中的一个 View Controller ,并进行了如下所示的更改:

#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);
}

本质上,我想在此 View 首次加载时运行查询,以存储一些数据供以后使用。但是,XCode 不喜欢底部的“myCallback”用法。它说:未声明使用标识符“myCallback”。

该方法在头文件中声明,我什至尝试将其设为静态。似乎没有什么能让这个错误消失。我知道我一定是在这里做一些根本性的错误,但对于我的生活我无法弄清楚是什么 - 我什至找不到这个领域的其他代码示例可以帮助我弄清楚我错过了什么。

非常感谢!

最佳答案

回调需要是一个 C 函数。尝试

int myCallback(void *a_parm, int argc, char **argv, char **column)
{
return 0;
}

关于objective-c - 如何在 iOS 5.1 上将回调函数传递给 sqlite3_exec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com