Iphone Sqlite数据到NSMutableArray错误

Iphone Sqlite数据到NSMutableArray错误,iphone,ios,c,arrays,Iphone,Ios,C,Arrays,我正在尝试使用一个小类来管理Sqlite。我想将从数据库检索到的数据存储到一个对象数组中,但应用程序崩溃(访问错误) 我的代码: - (ArrayList *) execNonQuery: (char *) query { @try { sqlite3_stmt *sqlStat; ArrayList *dataList; if(sqlite3_prepare_v2(self->dbHandle, query, -1, &s

我正在尝试使用一个小类来管理Sqlite。我想将从数据库检索到的数据存储到一个对象数组中,但应用程序崩溃(访问错误)

我的代码:

- (ArrayList *) execNonQuery: (char *) query {
    @try {
        sqlite3_stmt *sqlStat;
        ArrayList *dataList;

        if(sqlite3_prepare_v2(self->dbHandle, query, -1, &sqlStat, NULL) == SQLITE_OK) {
            dataList = [[ArrayList alloc] init];

            while (sqlite3_step(sqlStat) == SQLITE_ROW) {
                NSMutableArray *list = [[NSMutableArray alloc] init];

                for (int i = 0; i < sqlite3_column_count(sqlStat); i++) {
                    // CRASH
                    id data = (__bridge id)(sqlite3_column_value(sqlStat, i)); 

                    [list addObject: data]; 
                }

                [dataList addList:list];
            }
        }

        sqlite3_finalize(sqlStat);

        return dataList;
    }
    @catch (NSException *exception) {
        NSLog(@"Excepción capturada: %@", [exception reason]);

        return NULL;
    }
}
注意:ArrayList类只是NSMutableArray的NSMutableArray

我没有目标c,只是在学习。。。对不起,拼写错误


致以最诚挚的问候。

@try@catch
不是一个好的编程方案,无论您使用哪种语言。您的“id数据”中似乎没有。不能将零值添加到NSMutableArray@SamuelPedrosa:问题是
sqlite3\u column\u value()
返回一个指向
sqlite3\u value
的指针,而您不能将其强制转换为
id
(它是指向Objective-C对象的指针)。@SamuelPedrosa:我不知道sqlite3\u值到底包含什么。但不妨看看NSValue,它可以将C-structs包装成Objective-C对象,然后将其添加到NSArray.sqlite3_column_值返回一个非Objective-C对象的值。您无法(有效地)将其强制转换为
id
。建议您使用:sqlite3\u column\u int、sqlite3\u column\u text等。
id data = (__bridge id)(sqlite3_column_value(sqlStat, i));