首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用json序列化的serialisation 4中意外的非空返回值

使用json序列化的serialisation 4中意外的非空返回值
EN

Stack Overflow用户
提问于 2017-12-08 11:10:07
回答 1查看 595关注 0票数 2

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

这是我的密码

代码语言:javascript
复制
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()

}

在堆栈溢出中有一些类似的问题,但是到目前为止,没有一个问题能够解决我的问题,因为他们都说添加-> NSArray

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-08 11:19:42

不能直接从异步任务返回数据。使用闭包

使用类似的闭包创建函数。

代码语言:javascript
复制
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()
}

然后打电话:

代码语言:javascript
复制
jsonSerialisation(jsonUrl: "Your Url") { (json) in
    print(json)
}

这是有帮助的

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47713167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档