首页 > 解决方案 > Swift json 调用返回空括号,nil 无法检查它

问题描述

所以我正在做一个 api 调用,有时“对象”返回空括号

api调用返回以下

{"meta":{"status":"OK","count":0,"offset":0,"totalcount":0},"objects":[]}

我希望代码能够注意到“对象”括号是空的,并对其进行操作(if 或 else 语句)。但我不知道如何让 swift 看到括号是空的,并且“nil”不起作用。

对此可能有一个非常简单的解决方案,但是由于我对此很陌生,因此我真的很难找到解决方案。

这些是我的结构(我发布了一部分代码,足以让您了解我需要帮助的内容):

struct media: Codable {
    var webpath:String }

struct Inventory: Codable {
    var instock: Int
    var coordinates: String
    var lastinventory: String }

struct descriptions: Codable {
    var longdescription:String
    var created:String  }

struct main: Codable {
    let displayname:String
    let stock:String
    let inventory: [Inventory]
    let descriptions:[descriptions]
    let media:[media] }

struct json: Codable {
    let objects:[main] } 



 let session = URLSession.shared
        let datatask = session.dataTask(with: url!) { (data, response, error) in
            //check for response
            if let response = response
            { //print(response)
                
            }
            
            //check for errors
            if error == nil && data != nil {
                //parse Json
                let decoder = JSONDecoder()
                
                do {
                
                let newsFeed = try decoder.decode(json.self, from: data!)
                    
              
                    
                    if newsFeed.objects == nil // THIS DOESNT WORK, IT RETURNS PRINT "NOT EMPTY"
                    {
                        print("empty")
                    }
                    else
                    {
                        print("not empty")
                    }


标签: swift

解决方案


空数组与nil. 事实上,你已经以一种不可能的方式声明了你的objects财产。因此,要检查空数组,您可以使用:nil

if newsFeed.objects.isEmpty {
   //Do whatever you need here
}

推荐阅读