0

我正在使用几个 UISwitches,但出于某种奇怪的原因,我无法正确设置它们。

我正在提取 JSON 数据,这些数据基本上只是一堆按特定顺序排列的整数,根据它们的值,我希望将开关设置为打开或关闭。以下是相关代码的一部分:

- (void)fetchData
{

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://10.101.10.101/get/channels"]];

        NSError* error;

        LightingData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
        idData = [LightingData valueForKey:@"level"];

        NSLog(@"Lighting Values: %@", [idData objectAtIndex:19]);

        dispatch_async(dispatch_get_main_queue(), ^{

       });
    });

}

- (void)dataCheck
{
    int x = 100;

    if ([idData objectAtIndex:19 == x])
    {
        [fieldsOverheadStatus setOn:YES];
    }
}

dataCheck方法持续一段时间,设置大约 20 个开关。

我将所有开关都设置为默认为“关闭”,但是当我运行应用程序时,它们都显示为“打开”。

我设置断点以查看该dataCheck方法是否被调用,并且确实如此。如您所见,我登录以查看值是什么objectAtIndex:19,返回的值是 0(非空)。我检查了的内容idData并且所有值都正确获得。

谁能告诉我为什么我的开关被改变了,即使他们不应该改变?我究竟做错了什么?

让我知道是否需要更多代码。

4

1 回答 1

2

您正在检查idData索引处的对象(19 == x),即false/ NO,即 0;索引 0 处的对象非零,因此您始终将开关设置为打开。那条线应该是:

if ([[idData objectAtIndex:19] intValue] == x)
于 2013-08-05T23:28:32.037 回答