这是我的代码:
NSString *ask = [NSString stringWithFormat:@"SELECT name FROM users"];
sqlite3_stmt *statement;
const char *query_statement = [ask UTF8String];
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_DB) == SQLITE_OK){
{
if (sqlite3_prepare_v2(_DB, query_statement, -1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
}
sqlite3_finalize(statement);
sqlite3_close(_DB);
}
}
我想将上面的结果设置为NSMUtableArray,如下例所示:
totalStrings =[[NSMutableArray alloc]initWithObjects:@"xxx",@"xxx",@"xxx", nil];
我该怎么办?
=================更新日期所有代码======================= 这是便于查看的aditonal代码。我真的不知道我做错了什么。
@interface ViewController ()
{
NSMutableArray *totalStrings;
NSMutableArray *filteredStrings;
BOOL isFiltered;
}
@property(strong, nonatomic)NSMutableArray *entries;
@end
@implementation ViewController;
@synthesize entries;
- (void)viewDidLoad {
// totalStrings =[[NSMutableArray alloc]initWithObjects:@"ggg",@"gggggg", nil];
// NSLog(@"%@",totalStrings);
NSMutableArray* result=[[NSMutableArray alloc] init];
NSString *ask = [NSString stringWithFormat:@"SELECT * FROM users"];
sqlite3_stmt *statement;
const char *query_statement = [ask UTF8String];
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_DB) == SQLITE_OK){
{
if (sqlite3_prepare_v2(_DB, query_statement, -1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
//add your namefield here.
[result addObject:nameField];
totalStrings=[[NSMutableArray alloc] initWithArray:result];
}
sqlite3_finalize(statement);
sqlite3_close(_DB);
}
}
NSLog(@"%@",totalStrings);
//AND PUT THOSE RESULTS INTO THIS ARRAY ( I WILL USE THIS LATER)
//I want it to be this format: totalStrings=[[NSMutableArray alloc]initWithObjects:@"test1",@"test2",@"test3", nil];
}
答案 0 :(得分:0)
创建并分配新的NSMutableArray totalStrings并在While循环的totalStrings中添加nameField。
NSMutableArray *totalStrings = [[NSMutableArray alloc] init];
在while循环中
[totalStrings addObject:nameField];
答案 1 :(得分:0)
以下代码适用于您希望获取数组
中的所有名称字段的情况NSMutableArray* result=[[NSMutableArray alloc] init];
NSString *ask = [NSString stringWithFormat:@"SELECT name FROM users"];
sqlite3_stmt *statement;
const char *query_statement = [ask UTF8String];
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_DB) == SQLITE_OK){
{
if (sqlite3_prepare_v2(_DB, query_statement, -1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
//add your namefield here.
[result addObject:nameField];
}
sqlite3_finalize(statement);
sqlite3_close(_DB);
}
}
最后你可以做到
totalStrings=[[NSMutableArray alloc] initWithArray:result];
答案 2 :(得分:0)
你可以这样做,
-(NSArray *)list_totalStrings
{
NSMutableArray *totalStrings = [[NSMutableArray alloc] init];
NSString *ask = [NSString stringWithFormat:@"SELECT name FROM users"]; //Make sure field and table names are proper
sqlite3_stmt *statement;
const char *query_statement = [ask UTF8String];
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_DB) == SQLITE_OK){
if (sqlite3_prepare_v2(_DB, query_statement, -1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
[totalStrings addObject:nameField];
}
sqlite3_finalize(statement);
sqlite3_close(_DB);
NSLog(@"%@",totalStrings);
return totalStrings;
}
else
return nil;
}
else
return nil;
}