2012-04-22 13 views
0

私はJSON解析を使用してPHPを使用してMySqlからデータを取得しています 私が望むすべてのデータがありますが、このデータを印刷したいときはforループを作成しましたが、のみ。これはDidViewLoadで私のコードnsarrayの全データを取得

です:

 
- (void)viewDidLoad 
{ 
[super viewDidLoad];

NSString *phpUrl = @"http://dt-works.com/eman/bookOwn.php"; NSString *dbName = @"dbName"; NSString *localHost = @"localhost"; NSString *dbUser = @"dbUser"; NSString *dbPwd = @"dbPwd"; int u_id = 1; NSString *user_id = [NSString stringWithFormat:@"%d",u_id]; SBJsonParser *parser = [[SBJsonParser alloc] init]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:phpUrl]]; [request setHTTPMethod:@"POST"]; NSString *post = [[NSString alloc] initWithFormat:@"dbName=%@&localHost=%@&dbUser=%@&dbPwd=%@&user_id=%@&submit=", dbName, localHost, dbUser, dbPwd, user_id]; [request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]]; NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; NSArray *statuses = [parser objectWithString:json_string error:nil]; int arraySize = [statuses count]; for (NSDictionary *status in statuses) { bo_id2 = [status objectForKey:@"bo_id"]; bo_name2 = [status objectForKey:@"bo_name"]; bo_au_id2 = [status objectForKey:@"bo_au_id"]; bo_pub_id2 = [status objectForKey:@"bo_pub_id"]; bo_num_pages2 = [status objectForKey:@"bo_num_pages"]; bo_publish_year2 = [status objectForKey:@"bo_publish_year"]; } NSLog(@"size of array is: %d", arraySize); for (int i=0; i<arraySize; i++) { NSLog(@"%d:",i); // here I want to retrieve all array elements .. when I try NSLog(@"Book id: %@ - book name: %@", bookId, bookName); // this give me the last elemet only not all data // I want to get the data here to use it later .. how ??? }

}

任意のヘルプ?

+0

ループ内に変数を印刷しています。毎回同じ値が印刷されます。これは必要なサポートを必要とする質問ではありません。 – rakeshNS

答えて

0

あなたがどんな本を取り出したいとき

NSMutableArray *books = [[NSMutableArray alloc] init]; 
for(NSDictionary *status in statuses){ 
    [books addObject:status]; 
} 

その後、あなたの最初のループでは、タスクを完了するために2つのforループを使用する必要がなぜ私はかなり理解していない、あなただけの[books objectAtIndex:index]を呼び出すことができます。 うまくいけば、これは助けになると思います。 あなたが求めたすべてのタスクを完了できるはずです。

編集 あなただけのただ一つの要素が必要な場合、例えばbo_nameあなたが使用することができます:あなたはインスタンス変数、インスタンス変数に、各オブジェクトの値を再割り当てするように見える

NSMutableArray *books =[[NSMutableArray alloc] init]; 
for(NSDictionary *status in statuses){ 
    [books addObject:[status objectForKey:@"bo_name"]]; 
} 
+0

私は後で他のものと一緒に使用したいので、私は他のforループが必要なので、私はそれを使用すると、配列の最後の要素しか得られず、すべての要素が必要になります。: – Eman87

+0

NSLog(@ "Book id:%@"、[status objectForKey:@ "bo_id"]);を最初のループに追加して、すべてを印刷できるかどうか確認してください。 – Jason

+0

はいそれらは正常に印刷されますが、これは私の完全な目標ではありません。印刷されてOKかどうかを確認するために、別の行に戻します。 – Eman87

1

のみ1つのオブジェクトを指しますが、割り当てられているオブジェクトのすべてではありません。

+0

何か提案してください?? – Eman87

+0

データで何をしようとしていますか? – Otium

+0

sqlite3テーブルに挿入したいので、最後の要素だけでなく、それを取得したい – Eman87

0

ほとんどの場合、配列を再初期化している必要があります。それをコード全体で確認してください。

0
NSLog(@"Book id: %@ - book name: %@", bookId, bookName); 

上記のNSLogのbookIdとbookNameの値はどうやって取得できますか?あなたのコードに何かがありません。あなたはこの試みることができる

:他の点では

for(NSDictionary *status in statuses) { 
    NSLog(@"Book id: %@ - Book Name: %@", [status objectForKey:@"bo_id"], [status objectForKey: @"bo_name"]); 
} 

を使用すると、2番目のforループを使用したい場合は、最初のものと同じ道を行きます。

関連する問題