저는 xcode/iOS/Objective-C와 sqlite를 처음 사용합니다. 나는 스스로에게 기본을 가르치려고 노력하고 있으며 select 쿼리를 위해 sqlite3 래퍼 "sqlite3_exec"를 사용하고 싶습니다. 웬일인지, 나는 이것을하는 누군가의 어느 곳이라도 간단한 예를 발견 할 수 없다. 괜찮iOS 5.1에서 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 */
);
:
기본적으로,이 방법은 콜백 함수의 파라미터 (세번째)을 갖는다. 나는 콜백을 낯선 사람이 아니다. 그러나 구문을 올바르게 이해하지 못하는 것 같습니다. 내 아이 패드 (아이폰 OS 5.1) 엑스 코드 (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.'의 선언되지 않은 사용
그 방법은 헤더 파일에 선언되어 있고 정적으로 만들려고 시도했습니다. 이 오류가 사라지지 않는 것 같습니다. 나는 여기서 근본적으로 잘못된 것을해야한다는 것을 알고 있지만, 나 자신의 삶에 대해 무엇이 부족한 지 알 수 없다.이 부분에서 내가 누락 된 부분을 찾아 낼 수있는 다른 코드 샘플을 찾을 수조차 없다.
감사합니다.
그래, 그거야! 정말 고마워요, 저를 미치게했습니다! 동일한 클래스에서 C와 objective-C 구문을 혼합하는 것이 적절하다고 생각합니까? 내가 말했듯이, 나는이 특별한 지역에 처음 온 사람이다. 1 패스 네 번째 매개 변수로 개체 : 당신이 목표 - C의 콜백 메소드의 핵심 구현하려는 경우 –
@JohnDoh sqlite3_exec (DB, SQL, myCallback (__bridge 무효 *) 자체를 &err); 2. C 콜백 호출을 Objective-C 객체의 메소드로 만듭니다. 예를 들어 Objective-C -myCallback : argc : argv : column 메소드를 계속 사용하는 경우 int myCallback (void * a_parm, int argc, char ** argv를, 문자 ** 열) { 반환 [(__bridge SecondViewController *) a_param을 myCallback :를 argv를 열 :는 argc를 ARGV :는 argc를 a_parm 칼럼] }! –
우수, 정말 감사합니다 –