使用 json 序列化的 void 函数 swift 4 中出现意外的非 void 返回值

2023-12-06

我目前正在尝试通过编写可以多次使用的通用函数来清理项目上的代码。但是我需要我的函数返回一个数组。我的错误是“void 函数中出现意外的非 void 返回值”

这是我的代码

func JSONSerialisation(JsonUrl: String) -> NSArray{
    let url = URL(string: JsonUrl)
    let task = URLSession.shared.dataTask(with: url!) { (data, responce, error) in
        if error != nil
        {
            print("error")

        }
        else
        {
            if let content = data
            {
                do
                {
                    if let Json = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSArray{
                        return Json //Error occurs here
                    }

                }
                catch
                {

                }

            }

        }

    }
    task.resume()

}

Stack Overflow 上有一些类似的问题,但到目前为止,没有一个能够解决我的问题,因为他们都说添加-> NSArray.

提前致谢


您无法直接从异步任务返回数据。使用闭包

使用闭包创建一个函数,例如。

func jsonSerialisation(jsonUrl: String, completion block: @escaping ((NSArray) -> ())){
    let url = URL(string: JsonUrl)
    let task = URLSession.shared.dataTask(with: url!) { (data, responce, error) in
        if let e = error{
            print(e.localizedDescription)
        }
        else{
            if let content = data{
                do {
                    if let Json = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSArray{
                        block(Json)
                    }
                }
                catch let error{
                    print(error.localizedDescription)
                }
            }
        }
    }
    task.resume()
}

并致电:

jsonSerialisation(jsonUrl: "Your Url") { (json) in
    print(json)
}

这很有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 json 序列化的 void 函数 swift 4 中出现意外的非 void 返回值 的相关文章

随机推荐

  • Angularjs:没有 templateURL 的路由和控制器?

    是否可以在没有 templateURL 的情况下使用 Angularjs 的路由和控制器 例如 下面是我当前的路线 控制器和模板网址 return app config routeProvider function routeProvide
  • BackboneJS 使 ID 为整数

    我正在使用 JSON stringify 和 JSON parse 根据对在线数据库的更改来编辑我的 JSON 文件 一切正常 除了在数字周围加上引号 这会搞乱 JSON 文件 例如应该是 id 1但它正在打印出来 id 1 我该如何编辑引
  • 即使禁用 IIS 压缩,为什么 ScriptResource.axd 仍会被压缩?

    我在 IIS 6 0 上运行 ASP NET 应用程序 通常我会为动态和静态文件启用压缩 但是 我暂时关闭了压缩 但 ScriptResource axd 仍然以压缩形式发送 这并不像是配置错误 因为 WebResource axd 未压缩
  • 这个replaceAt函数是如何工作的?

    您能解释一下这段代码是如何工作的吗 String prototype replaceAt function index character return this substr 0 index character this substr i
  • Postgres:为什么使用偏移/限制的子选择性能如此糟糕

    您能帮我理解这些语句之间性能下降的原因吗 对我来说 似乎在 D E 的情况下 他首先将地址加入到所有订阅者中 最后应用偏移和限制 他到底为什么要这么做 我是否遗漏了有关子选择和偏移如何协同工作的信息 他不应该首先找到正确的偏移量 然后开始执
  • jQuery Live 可以在 Safari 上运行吗?

    我刚刚问过这个问题一小时前但对于 IE8 我被告知 JQuery Live 处理程序不支持 更改 所以我切换到 单击 这解决了我的问题 现在我发现 Safari 由于某些奇怪的原因无法使用单击 有人知道吗为什么 所以我在想我可以两者兼得吗
  • gdb:没有可用的瓶子-gdb 安装

    我尝试在我的 M1 Mac OS 11 5 2 上安装 gdb 命令 但出现了 brew 错误 gdb 没有可用的瓶子 I use brew install gdb 这是输出 Error gdb no bottle available Yo
  • 我怎样才能给eclipse更多的内存超过512M?

    我有以下设置 但是当我输入 1024 并将所有 512 替换为 1024 时 Eclipse 根本不会启动 我的 eclipse JVM 如何拥有超过 512M 的内存 startup plugins org eclipse equinox
  • 如何开发“旋转瓶子”应用程序

    我正在制作一个旋转瓶子游戏 我不知道如何通过滑动手指的速度来控制瓶子的旋转速度 我希望它像命运之轮一样工作 你刷得越快 它转得越快 我开始开发UIRotationGestureRecognizer 但我真的不认为这是最好的方法 嘿检查这个演
  • 无法读取 jar 文件中的文件

    我使用 spring boot 开发了一个应用程序 我需要读取包含电子邮件的 csv 文件 这是我的做法的一个片段 public Set
  • 如何在MySQL视图中生成序列号?

    我在Linux下使用MySQL 5 6 我有一个表可以让用户输入发件人号码和收件人号码 然后 有一个视图可以从另一个表中选择一些帐号在发件人号码和收件人号码之间的记录 最困难的问题是用户希望视图中的每条记录都有一个从 1 开始的序列号 例如
  • 有什么理由使用 css box-shadow 而不是 drop-shadow 吗?

    假设客户端兼容 是否有任何情况CSSbox shadow优于filter drop shadow From 文章这好像是drop shadow是硬件加速超集box shadow 这意味着我们基本上应该始终使用drop shadow代替box
  • C# 可以通过管道传输吗?

    我正在尝试使用 TCP 和简单的文本命令来控制网络上的程序 我最终可能会切换到二进制数据 但是 我想知道是否有一种方法可以对程序发送的数据进行编码并通过网络发送 然后对其进行解码并将其提供给接收程序 我当前的代码如下 但我正在尝试找到一种比
  • 比较时间戳与日期变量(MySQL 和 PHP)

    非常感谢任何帮助 假设我有一个 MySQL 数据库 其中时间戳列的值为 1305590400 我如何将其与 PHP 变量 2011 05 17 进行比较 我想完全忽略时间部分 只比较日期 目前我正在尝试让它与以下内容一起工作 但它没有返回结
  • Win32 CRITICAL_SECTION 包含什么?

    Win32 CRITICAL SECTION 包含哪些数据 它有多大 这是没有记录的 大概是特定于实现的 但我很想知道 这是我安装的 Windows Vista SDK 的结果 WinNT h typedef struct RTL CRIT
  • 将 wsHttpBinding 转换为 customBinding

    如何将以下 wsHttpBinding 转换为 customBinding 我需要这样做 这样我就可以增加时钟偏差 这是针对http的
  • 如何获取Windows负载值[重复]

    这个问题在这里已经有答案了 我想使用 Java 从 Windows 获取有关 CPU RAM HDD 网络和进程 服务 列表的数据 如何在不使用第三方库或 JNI 的情况下获取这些系统值 Windows 中是否有类似于 proc 的东西 我
  • 如何绘制具有径向渐变的扇形(iphone)

    如何在 Objective c Core Graphics 中绘制具有径向渐变的扇形 实心圆弧 我用 CGContextDrawRadialGradient 但它画了圆圈 如果你告诉我如何通过径向渐变填充任何形状 那就太好了 谢谢 添加定义
  • 防止 WooCommerce 优惠券堆叠在购物车和结帐页面上

    我需要防止两个特定的优惠券一起使用 我成功地实现了这段代码 它可以防止将这些优惠券堆叠在cart page add action woocommerce before cart check coupon stack function che
  • 使用 json 序列化的 void 函数 swift 4 中出现意外的非 void 返回值

    我目前正在尝试通过编写可以多次使用的通用函数来清理项目上的代码 但是我需要我的函数返回一个数组 我的错误是 void 函数中出现意外的非 void 返回值 这是我的代码 func JSONSerialisation JsonUrl Stri