swift - 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")
}
解决方案
空数组与nil
. 事实上,你已经以一种不可能的方式声明了你的objects
财产。因此,要检查空数组,您可以使用:nil
if newsFeed.objects.isEmpty {
//Do whatever you need here
}
推荐阅读
- reactjs - 来自 Graphql 的数组数据未填充 React 中的组件
- python - Cython ImportError:动态模块未定义模块导出函数(PyInit_world)
- javascript - 如何在 React 无限轮播中过渡/动画元素?
- python - 需要使用一个'while循环是否可以解决这个问题?
- macos - 如何在 MacOS 上将 'echo $SHELL' 更改为 '\bin\zsh'
- python - 在 Python 中生成一个预签名的 URL,然后在 Java 中使用它
- azure-ad-b2c - 更新自定义属性后获取新值的延迟
- r - R 中的 indval (labdsv) 错误 - “所有物种必须至少出现在一个地块中”
- node.js - mongodb 中的 ACID 事务
- python - 从测试子目录,导入从基础抽象类继承的模块