1

私は数日間解決策を探しましたが、残念ながら私のアプリのニーズに合った関連情報を見つけることができませんでした。

私がやろうとしていることは次
のとおりです 。sqLiteクエリメソッドを呼び出す
メソッドクエリsqLiteテーブル(すべての列を選択)
は、選択した行と列を配列
配列に保存し、呼び出し元に返す
必要がありますUITableViewは戻り値を表示する必要があります

私のコード:

FirstViewController.m:

result = [queryObject myQueryMethod]; //result is of type NSMutableArray  

Query.m:

NSString *myUsername;  
NSString *from;  
NSString *to;  
NSString *message;  

querySQL = [NSString stringWithFormat:@"SELECT * FROM messages WHERE to = '%@'" , myUsername];  
query_stmt = [querySQL UTF8String];  

NSMutableArray *allMessages = [[NSMutableArray alloc] init];  
if(sqlite3_prepare_v2(_userDB, query_stmt, -1, &statement, NULL) == SQLITE_OK ) {  

        while (sqlite3_step(statement) == SQLITE_ROW) {  
            from = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];  
            to = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];  
            message = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];  
            [allMessages addObject:message];  //MY PROBLEM..
        }

        return allMessages; //return to caller in FirstViewController.m

    }  

私の問題は、UITableViewのインデックスを並べ替えるために、すべての列(3つ)を配列に追加し、FirstViewController.m内の呼び出し元に配列を返すにはどうすればよいですか?
テーブルビューに情報を表示するには、次を使用します。

cell.textLabel.text = [result objectAtIndex:indexPath.row];  

助けていただければ幸いです、ありがとう!

4

2 に答える 2

2

3 つの列すべての値を保持するには、ディクショナリを使用する必要があります。

while (sqlite3_step(statement) == SQLITE_ROW)
 {  
      from = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];  
      to = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];  
      message = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];  

      NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: from, @"From", to, @"To", message, @"Message", nil];
      [allMessages addObject:dict];  //MY PROBLEM..
}

値を取得しながら、辞書から取得します。

cell.textLabel.text = [[result objectAtIndex:indexPath.row] objectForKey:@"To"];
于 2013-03-15T16:32:02.570 に答える
0

メッセージ値を配列に追加するだけです。3 つの列のそれぞれにプロパティを持つオブジェクトを作成し、代わりにそれらのオブジェクトの配列を返す必要があります。

または、3 つの文字列を配列に追加し、その場所に基づいて各値を取得することもできます。

cell.textLabel.text = [result objectAtIndex:indexPath.row * 3];
NSString *to = [result objectAtIndex:indexPath.row * 3 + 1];
NSString *message = [result objectAtIndex:indexPath.row * 3 + 2];

もちろん、他の値を配列に追加する必要があります。

[allMessages addObject:from];  //MY PROBLEM..
[allMessages addObject:to];
[allMessages addObject:message];
于 2013-03-15T16:39:20.317 に答える