检索nsarray的所有数据

时间:2012-04-22 15:11:49

标签: iphone objective-c ios ipad

我使用JSON解析通过使用php从MySql获取数据 我得到了我想要的所有数据,但是当我想要打印这些数据时,我创建了一个for循环,但它只给了我最后一个元素..这是我的代码

在DidViewLoad中

- (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 ??? }

}

任何帮助??

4 个答案:

答案 0 :(得分:1)

您似乎只是将每个对象的值重新分配给实例变量,实例变量仅指向一个对象,而不是指定给它的所有对象。

答案 1 :(得分:0)

我不太明白为什么你必须在第一个循环中使用两个for循环来完成任务

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

稍后,当您想要检索任何图书时,只需拨打[books objectAtIndex:index]即可。 希望这可以提供帮助。 您应该能够完成您要求的所有任务。

修改 如果您只想要一个元素,例如bo_name,您可以使用:

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

答案 2 :(得分:0)

最有可能你必须将数组重新定位到某个地方。检查整个代码。

答案 3 :(得分: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"]);
}

换句话说,如果您想使用第二个for循环,请使用与第一个相同的方式。