私は1つのアプリケーションを開発しています。そのiamでは、データベースデータを格納するためにNSMutableArrayを使用しています。データベースからこの配列にデータを取得した後。そのデータに対して検索操作を実行しています。その間、その配列が最後のオブジェクトのみを返すたびに。ただし、データベースからデータを取得するときに、さまざまなデータを取得します。それで、これを解決する方法を教えてください。私のコードの一部を以下に示します。
-(void)searchData
{
list=[db getlanguages];
for(for i=0;i<[list count];i++) {
databasefields *dbfield = [list objectAtIndex:i];
NSLog(@"%@",dbfield.lang);
}
}
このコードリストにはNSMutableArrayがあります。そのメモリを割り当てます。そして、そのプロパティをstします。
[dbgetlanguages]のコードは以下のとおりです。
-(NSMutableArray*)getlanguages
{
NSString *query = [NSString stringWithFormat:@"SELECT * FROM A"];
sqlite3_stmt *stStatement;
NSMutableArray *getdata = [[NSMutableArray alloc]init];
if(sqlite3_prepare_v2(dbfile, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
databasefields *dbfields=[[databasefields alloc]init];
while (sqlite3_step(stStatement)==SQLITE_ROW)
{
dbfields.num=sqlite3_column_int(stStatement, 0);
dbfields.lang=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 1)];
[getdata addObject:dbfields];
[dbfields release];
}
if (stStatement!= nil) {
sqlite3_finalize(stStatement);
}
}
sqlite3_close(dbfile);
return getdata;
}
回答:
回答№1の場合は3次の行を変更します
for(for i=0;i<[list count];i++) {
に
for(int i=0;i<[list count];i++) {
試してみてください。
編集
単一のオブジェクトを使用していて、それもリリースしています。
次のようにステートメントを作成します。
if(sqlite3_prepare_v2(dbfile, [query UTF8String], -1, &stStatement, nil)==SQLITE_OK)
{
databasefields *dbfields = nil;
while (sqlite3_step(stStatement)==SQLITE_ROW)
{
dbfields = [[databasefields alloc]init];
dbfields.num=sqlite3_column_int(stStatement, 0);
dbfields.lang=[NSString stringWithUTF8String:(char*)sqlite3_column_text(stStatement, 1)];
[getdata addObject:dbfields];
[dbfields release];
}
if (stStatement!= nil) {
sqlite3_finalize(stStatement);
}
}
回答№2の場合は1
for(for i =0 ?
あなたはループに2つのforを入れていますか?
for i
すべきである int i
回答№3の場合は0
これを試して:
-(void)searchData {
for(databasefields *dbfield in [db getlanguages]) {
NSLog(@"%@",dbfield.lang);
}
}
それでも配列内のすべての項目が繰り返されない場合は、[dbgetlanguages]で配列に何が入れられているかを確認する必要があります。
探すべきもの:
- 毎回同じオブジェクトを追加する
- 正しい配列を返さない
あなたのコードを見ずに、あなたの問題が何であるかを推測するのは難しいです。おそらくそのいくつかを追加し、私はこの答えを更新することができます。