iOS AFNetworking & Json 数据
iOS AFNetworking & Json Data
我有一本儿子价值观的字典,但我似乎无法检索到多个价值观。我是新手,我确定我只是忽略了某些东西或完全错误地去做了。
这是我在控制台收到的 json 数据:
`2015-03-10 16:41:46.693 Json[8118:629760] https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg
2015-03-10 16:41:46.694 Json[8118:629760] {
attributes = {
"Author(s)" = "John Eldredge";
Format = Paperback;
"ISBN-10" = 0785265740;
"Page Count" = 288;
"Publication Date" = "April 2002";
Publisher = "Nelson, Thomas, Inc.";
};
barcode = 9780785265740;
images = (
"https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg"
);
name = "Wild at Heart Field Manual: A Personal Guide to Discover the Secret of Your Masculine Soul";
"outpan_url" = "http://www.outpan.com/view_product.php?barcode=9780785265740";
videos = (
);
}
这是我试图检索数据的代码 - 如果我只要求一件事,我可以获得响应 - 但是,当我尝试获取多个值时,它会发出信号
我试图获取图像 url、名称和条形码。
#import "ViewController.h"
#import "AFNetworking.h"
static NSString * const BaseURLString = @"http://www.outpan.com/api/get-product.php?barcode=9780785265740&apikey=bbb053368784fed4f89d37f5fbabcf4";
...
- (IBAction)showJson:(id)sender {
// 1
NSString *string = BaseURLString;
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 2
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// 3
NSDictionary *dic = (NSDictionary *)responseObject;
NSArray *imagesUrl = [dic objectForKey:@"images"];
NSString *imagesUrlString = [imagesUrl objectAtIndex:0];
NSLog(@"%@", imagesUrlString);
NSLog(@"%@", responseObject);
//this crashes -
// NSArray *bookName = [dic objectForKey:@"name"];
// NSString *bookNameString = [bookName objectAtIndex:0];
// NSLog(@"%@", bookNameString);
// NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 4
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
message: [error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}];
// 5
[operation start];
}
@end
这是对我来说 运行 的代码。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://www.outpan.com/api/get-product.php?barcode=9780785265740&apikey=2bbb053368784fed4f89d37f5fbabcf4" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSDictionary *aDict = (NSDictionary*)responseObject;
NSLog(@" name %@",[aDict objectForKey:@"name"]);
NSLog(@" images %@",[aDict objectForKey:@"images"]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
这是我得到的控制台。
2015-03-11 04:39:43.038 del[49323:3297516] name Wild at Heart Field Manual: A Personal Guide to Discover the Secret of Your Masculine Soul
2015-03-11 04:39:43.038 del[49323:3297516] images (
"https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg"
)
我有一本儿子价值观的字典,但我似乎无法检索到多个价值观。我是新手,我确定我只是忽略了某些东西或完全错误地去做了。
这是我在控制台收到的 json 数据:
`2015-03-10 16:41:46.693 Json[8118:629760] https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg
2015-03-10 16:41:46.694 Json[8118:629760] {
attributes = {
"Author(s)" = "John Eldredge";
Format = Paperback;
"ISBN-10" = 0785265740;
"Page Count" = 288;
"Publication Date" = "April 2002";
Publisher = "Nelson, Thomas, Inc.";
};
barcode = 9780785265740;
images = (
"https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg"
);
name = "Wild at Heart Field Manual: A Personal Guide to Discover the Secret of Your Masculine Soul";
"outpan_url" = "http://www.outpan.com/view_product.php?barcode=9780785265740";
videos = (
);
}
这是我试图检索数据的代码 - 如果我只要求一件事,我可以获得响应 - 但是,当我尝试获取多个值时,它会发出信号 我试图获取图像 url、名称和条形码。
#import "ViewController.h"
#import "AFNetworking.h"
static NSString * const BaseURLString = @"http://www.outpan.com/api/get-product.php?barcode=9780785265740&apikey=bbb053368784fed4f89d37f5fbabcf4";
...
- (IBAction)showJson:(id)sender {
// 1
NSString *string = BaseURLString;
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 2
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// 3
NSDictionary *dic = (NSDictionary *)responseObject;
NSArray *imagesUrl = [dic objectForKey:@"images"];
NSString *imagesUrlString = [imagesUrl objectAtIndex:0];
NSLog(@"%@", imagesUrlString);
NSLog(@"%@", responseObject);
//this crashes -
// NSArray *bookName = [dic objectForKey:@"name"];
// NSString *bookNameString = [bookName objectAtIndex:0];
// NSLog(@"%@", bookNameString);
// NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 4
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
message: [error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}];
// 5
[operation start];
}
@end
这是对我来说 运行 的代码。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://www.outpan.com/api/get-product.php?barcode=9780785265740&apikey=2bbb053368784fed4f89d37f5fbabcf4" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSDictionary *aDict = (NSDictionary*)responseObject;
NSLog(@" name %@",[aDict objectForKey:@"name"]);
NSLog(@" images %@",[aDict objectForKey:@"images"]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
这是我得到的控制台。
2015-03-11 04:39:43.038 del[49323:3297516] name Wild at Heart Field Manual: A Personal Guide to Discover the Secret of Your Masculine Soul
2015-03-11 04:39:43.038 del[49323:3297516] images (
"https://outpan-images.s3.amazonaws.com/igq8ev0-9780785265740.jpg"
)