我一直试图弄清楚为什么Xcode中的Analyzer似乎喜欢这个代码,所以也许有人可以看出出了什么问题。给我这样的信息:"函数调用参数是一个未初始化的值"。
这条线路存在问题,并抱怨"声明":
if (sqlite3_exec(MysDB, delete_stmt, NULL, statement, NULL) == SQLITE_OK) {
实际代码:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &MyDB) == SQLITE_OK)
{
NSString *deleteSQL = [NSString stringWithFormat:@"DELETE FROM DATATABLE WHERE ID = %d", recordID];
const char *delete_stmt = [deleteSQL UTF8String];
if (sqlite3_exec(MysDB, delete_stmt, NULL, statement, NULL) == SQLITE_OK) {
NSLog(@"Deleted");
}else{
NSLog(@"Not Deleted");
}
sqlite3_close(MyDB);
}
}
More Code Here Removed on Purpose...
}
答案 0 :(得分:3)
制作时,您不会将sqlite3_stmt *statement;
(在if (buttonIndex == 1) {
下面)初始化为任何特定值。你在sqlite3_exec3()
函数中使用它。
答案 1 :(得分:1)
sqlite3_exec的第3个参数是回调函数,在您的示例中当前为NULL。第四个参数是此回调的参数。
http://www.sqlite.org/c3ref/exec.html
所以,我认为它不喜欢你给NULL回调函数提供一个实际参数的事实。
答案 2 :(得分:0)
我想你可能会在这一行上写错字。 sqlite3_exec
的第一个参数MysDB
应该是MyDB
。