栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

虚函数中的非预期非虚返回值(Swift 2.0)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

虚函数中的非预期非虚返回值(Swift 2.0)

您遇到了问题,因为您的线路:

return minions

不从您的函数返回。而是从中的完成处理程序返回

dataTaskWithRequest
。它不应该这样做,因为该关闭是一个无效函数。

您遇到的问题

dataTaskWithRequest
是由于异步操作引起的。这意味着它可以在执行功能后稍后返回。

因此,您需要更改设计模式。

一种实现方式如下:

static var minions:[Minion] = [] {    didSet {        NSNotificationCenter.defaultCenter().postNotificationName("minionsFetched", object: nil)   }}class func fetchMinionData() {    var myURL = "http://myurl/test.json"    let dataURL = NSURL(string: myURL)    let request = NSURLRequest(URL: dataURL!, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 5.0)    let session = NSURLSession.sharedSession()    session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in        let minionJSON = JSON(data!)        var minions = [Minion]()        for (_, minionDictionary) in minionJSON { minions.append(Minion(minionDetails: minionDictionary))        }        self.minions = minions        //THIS IS WHERe THE ERROR OCCURS    }).resume()}

然后,在调用函数之前,您应该注册以

NSNotification
名称“ minionsFetched”
进行侦听。而且,只有在收到该通知后,您才应该像处理这些小仆一样处理它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号