Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON iOS isEqualToString_Ios_Objective C - Fatal编程技术网

JSON iOS isEqualToString

JSON iOS isEqualToString,ios,objective-c,Ios,Objective C,我正在尝试检查.json文件中的值是“0”还是“1” My.json文件: { "timetable": [ { "50mhour": "1", "on": "1" }, { "50hour": "2", "on": "1" }, { "50hour": "50min1", "on": "1" }, {

我正在尝试检查.json文件中的值是“0”还是“1”

My.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];
}
当然,我也创建了一本NSC字典

NSDictionary *tempDictionary= [self.get objectAtIndex:1];
我不太确定
objectAtIndex
的值

检查值是“0”还是“1”的正确方法是什么?我知道
IsequalString:
可能可以做到这一点,但我不确定如何做到

更新: 尝试将此作为以下答案的建议:

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仍然显示“不工作!”。

您提供的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];

JSON的流程如下所示:

在JSON中有一个数组,在该数组中,第一个元素是dictionary

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

从以下代码中获取On的值:

int on=[[[self.get objectAtIndex:0]objectForKey:@“on”]integerValue]


int-value=[[self.get-objectAtIndex:0]objectForKey@“50小时”]integerValue]

不要害怕犯错误。运行它,看看会发生什么。打印值和/或设置断点并在调试器中遍历。isEqualToString:
方法用于比较两个
NSString
对象。因为你有一个
int
你需要:
if(onValue==1){
@rmaddy谢谢,它工作了。但是由于某些原因,我仍然没有得到正确的值。它应该回答1,但是没有,JSON文件包含1作为值。我的JSON文件大得多,但是所有的值都非常相似。我尝试了你的代码(见更新的帖子)但它不起作用,它回答的是错误的接收器类型Int。我做错了什么吗?“on”的值密钥不是一个
NSNumber
,而是一个
NSString
。您的代码之所以有效,是因为
NSString
恰好有一个
intValue
方法,比如
NSNumber
。谢谢@rmaddy的建议,代码可以工作,我认为我的.json文件有点出错,xcode应该给我正确的消息(我再次更新了我的代码,希望您能看一看)。此外,我的JSON文件不仅包含一个元素,它还包含更多元素。如果我是对的,请参阅更新的帖子。@Timothy,您能在控制台的调试器/日志中看到
[[self.get objectAtIndex:0]objectForKey:@“on”]
?如果分配给
int
变量,请使用
intValue
。如果使用
integerValue
,则变量的类型应为
NSInteger