JSON iOS isEqualToString

时间:2013-06-17 18:44:03

标签: ios objective-c

我试图检查我的.json文件中的值是否为" 0"或" 1"。

我的.json文件:

{
    "timetable": [
      {
        "50mhour": "1",
        "on": "1"
      },
      {
        "50hour": "2",
        "on": "1"
      },
      {
        "50hour": "50min1",
        "on": "1"
      },
      {
        "techhour": "4",
        "on": "1"
      },
    ]
}

我创建了一个调用此URL的方法:

-(void)makeRequests
{
    NSURL *url = [NSURL URLWithString:@"http://content.app.ch/api/timetable.json"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                         JSONRequestOperationWithRequest:request
                                         success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject)
                                         {

                                             self.get = [responseObject objectForKey:@"timetable"];       
                                         }
                                         failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseObject)
                                         {
                                             NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
                                         }];

    [operation start];
}

当然,我也创建了一个NSDictionary

NSDictionary *tempDictionary= [self.get objectAtIndex:1];

我对objectAtIndex值不太确定。

检查值是否为" 0"的正确方法是什么?或" 1"我知道isEqualToString:可能会这样做,但我不确定如何。

更新: 从下面的答案中得出这个建议:

NSNumber *obj = [[self.get objectAtIndex:0] objectForKey:@"on"];
int onValue = [obj intValue];

if (onValue == 1) {
    NSLog(@"works!");
}

else {
    NSLog(@"doesn't work!");
}

代码有效,但JSON值为" 1"并且NSlog仍然显示"不起作用!"。

2 个答案:

答案 0 :(得分:1)

您呈现的JSON编码数组(时间表)只有一个元素,因此使用objectAtIndex:1会导致程序崩溃/抛出超出范围的异常。从数组中获取元素0或lastObject,您将获得指向以下字典的指针:

{
"50hour": "1",
"on": "1"
}

由于这是一本字典,因此查找值的正确方法是按键:

NSNumber *obj = [[self.get objectAtIndex:0] objectForKey:@"on"]; // or @"50hour", whichever you need
int onValue = [obj intValue];

答案 1 :(得分:0)

您的JSON流程如下:

你有JSON中的数组,在那个数组中,第一个元素是字典。

首先将JSON中的数据直接转换为数组。然后将Array的第一个对象放入字典中,然后得到像这样的值

从此代码中获取On的值:

int on = [[[self.get objectAtIndex:0] objectForKey:@"on"] integerValue];

int value = [[[self.get objectAtIndex:0] objectForKey@"50hour"] integerValue]