【问题标题】:How to check datas from URL-requests correctly?如何正确检查来自 URL 请求的数据?
【发布时间】:2016-03-06 19:20:11
【问题描述】:

我从一个 URL 请求中捕获了一些数据。 通常它必须是存储在数据库中的整数值。 所以我得到了以下代码:

if ([[sourceDict objectForKey:@"fields"] objectForKey:@"id"]) {
    if ([[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] isKindOfClass:[NSArray class]]) {
        if ([[sourceDict objectForKey:@"fields"] objectForKey:@"id"] > 0) {
            self.id = [[[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] objectAtIndex:0] intValue];
        }
    } else {
        self.id = [[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] intValue];
    }
}

现在的问题是有人输入了一些其他值,例如从 URL 请求到该数据库字段的字符串也不是整数。

所以应用程序现在崩溃是因为 objectForKey:@"id" 不再是整数了吗?

现在怎么查?我想这不是检查它是否是字符串值的好方法,不是吗?

【问题讨论】:

    标签: objective-c arrays integer nsdictionary


    【解决方案1】:

    是的,对来自 json 或类似的输入数据进行类型检查是一些非常好的做法。

    使用[someObject isKindOfClass:[AClass class]]

    例如[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] isKindOfClass:[NSArray class]]

    所以你已经这样做了,并检查对象是否为NSArray 类型(或其任何子类)。你可以用NSNumber[[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] objectAtIndex:0][[[sourceDict objectForKey:@"fields"] objectForKey:@"id"] intValue]做同样的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2013-02-19
      • 2012-03-29
      • 1970-01-01
      • 2015-01-10
      • 2020-10-04
      相关资源
      最近更新 更多