首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON响应处理iOS 6

JSON响应处理iOS 6
EN

Stack Overflow用户
提问于 2012-11-08 21:46:16
回答 1查看 1.2K关注 0票数 2

我有一个生成JSON结果的REST服务,它已经被几个不同的验证工具等验证过了。我对iOS开发相当陌生,但总体上不是开发。尽管我尽了最大的努力,但我的尝试并不成功。

来自服务的典型响应:

代码语言:javascript
复制
[
    {
        "prcID": 547,
        "prcName": "walls",
        "prcDescription": "hi-lo",
        "1prc": 270,
        "2prc": 282,
        "3prc": 312,
        "4prc": 348,
        "5prc": 354,
        "6prc": 360,
        "7prc": 366,
        "8prc": 372,
        "9prc": 384,
        "10prc": 432
    },
    {
        "prcID": 548,
        "prcName": "doors",
        "prcDescription": "hi-lo",
        "1prc": 270,
        "2prc": 282,
        "3prc": 312,
        "4prc": 348,
        "5prc": 354,
        "6prc": 360,
        "7prc": 366,
        "8prc": 372,
        "9prc": 384,
        "10prc": 432
    }
]

代码是样例代码和我自己尝试的代码的混合:

代码语言:javascript
复制
- (void)fetchedData:(NSData *)responseData {
    //parse out the json data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1
                                                         options:kNilOptions
                                                           error:&error];


    NSMutableArray *myarray = [json.description mutableCopy];
    outPutText.text = [myarray mutableCopy];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:
        [NSURL    URLWithString:@"someserviceurl"]];
        [self performSelectorOnMainThread:@selector(fetchedData:)
                               withObject:data waitUntilDone:YES];
    });
}

这段代码至少让我在TextView中看到了来自服务的响应,但每次我尝试使用ObjectAtIndex或AllKeys迭代进入'json‘NSDictionary时,我都会得到一个类似的错误,就像我尝试下面的代码时一样:

代码语言:javascript
复制
NSArray* somearray = [json objectForKey:@"prcName"];
NSLog(@"PriceName: %@", somearray);

错误是:

代码语言:javascript
复制
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x71944b0'

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 04:23:19

这个怎么样?

代码语言:javascript
复制
NSString *firstName = [NSString stringWithFormat:
                       @"%@",
                       json[0][@"prcName"], nil];
NSLog(@"%@", firstname);

iOS6将响应转换为数组,我使用[0]来选择响应JSON的第一个“块”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13290190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档