如何检查以下响应中是不是存在数据密钥?

Posted

技术标签:

【中文标题】如何检查以下响应中是不是存在数据密钥?【英文标题】:How to check data key is present in below response?如何检查以下响应中是否存在数据密钥? 【发布时间】:2016-07-14 07:29:03 【问题描述】:

我在 swift 中使用 ObjectMapper.framework 并成功映射了所有值。那是我的代码

class CompetitionListModel: Mappable 
var active: Int?
var channel: String?
var competition_type_id: Int?
var country_id: Int?
var created_at: [String: String]?
var ends_at: String?
var id: Int?
var name: String?
var logo: String?
var order: Int?
var parent: Int?
var updated_at: String?
var data: [AnyObject]?


required init?(_ map: Map) 
    mapping(map)


func mapping(map: Map) 
    active <- map["active"]
    channel <- map["channel"]
    competition_type_id <- map["competition_type_id"]
    id <- map["id"]
    country_id <- map["country_id"]
    created_at <- map["created_at"]
    ends_at <- map["ends_at"]
    name <- map["name"]
    logo <- map["logo"]
    order <- map["order"]
    parent <- map["parent"]
    updated_at <- map["updated_at"]
    data <- map["data"]




这是我映射的响应

   
    active = 1;
    channel = fieldhockey;
    "competition_type_id" = 2;
    "country_id" = 2;
    "created_at" = "2014-09-19T14:45:43";
    "ends_at" = "2099-09-19T00:00:00";
    id = 31;
    logo = "cf78a0a5-9ee2-4419-87e7-90b2eacf6ff5.png";
    name = Fieldhockey;
    order = "-2";
    parent = 0;
    "updated_at" = "2015-09-10T09:30:33";
,
    
    active = 0;
    channel = "fh-eurohockey-u18m-championship2";
    "competition_type_id" = 2;
    "country_id" = 2;
    "created_at" = "2015-07-02T18:03:50";
    data =         
    ;
    "ends_at" = "2099-12-31T00:00:00";
    id = 112;
    logo = "a19945fd-a0db-485f-809d-d6078e7fbfe8.jpg";
    name = "EuroHockey U18 Championship II, Boys, 2015";
    order = "-2";
    parent = 31;
    "updated_at" = "2015-09-10T09:26:56";
,

我通过这段代码得到这个值

var arrOperation: [CompetitionListModel] = []

并由此从 arrOperation 中获取价值 打印(self.arrOperation[0].data)

但是您可以在响应中看到数据键在此响应中有时不存在,有时它存在。所以我必须检查数据键是否存在,但我也映射了这个始终存在于模型类中的键。所以我正在检查这段代码

     if  let keyExists = self.arrOperation[indexPath.row].data 
      print("key is present")
    
    else
        print("key is not present")

    

但是数据键总是出现在模型类中,它的打印值为 nil。所以请告诉我如何识别数据的键名是否存在于数组中。

【问题讨论】:

【参考方案1】:
for dict in self.arrOperation 
    if  let keyExists = dict["data"] 
        print("key is present")
    
    else
        print("key is not present")

    

试试这个代码。对于我的字典,其中有一个数据键,这段代码可以正常工作

【讨论】:

self.arrOperation 也是模型类的对象,请查看我的代码,如果 let keyExists = self.arrOperation[indexPath.row].data print("key is present" ) else print("密钥不存在") 因为您使用的是简单数组,但我使用的是始终具有数据键的模型类数组。请查看我上面的代码,您将获得所有信息。 你拥有的是 NSArray 类型。将其更改为 Array 类型 var arrOperation:Array = [Modal(data: "Some data"), Modal(data: nil)]

以上是关于如何检查以下响应中是不是存在数据密钥?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 .NET 中是不是存在 RSA 密钥容器

如何检查 Perl 的哈希中是不是存在密钥? [复制]

如何检查密钥是不是存在于深层 Perl 哈希中?

检查 Berkeley DB C++ API 中是不是存在密钥 [关闭]

在 Cloud Firestore 规则中 - 如何检查密钥是不是为空

使用 boto3 检查 s3 的存储桶中是不是存在密钥