我使用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 ???
}
}
任何帮助??
答案 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循环,请使用与第一个相同的方式。