Iphone Sqlite数据到NSMutableArray错误
我正在尝试使用一个小类来管理Sqlite。我想将从数据库检索到的数据存储到一个对象数组中,但应用程序崩溃(访问错误) 我的代码: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
- (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));