首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOperation与sendAsynchronousRequest completionBlock

NSOperation与sendAsynchronousRequest completionBlock
EN

Stack Overflow用户
提问于 2015-05-18 19:03:24
回答 1查看 153关注 0票数 0

我有一个NSOperation子类,它具有以下main函数:

代码语言:javascript
复制
override func main() {
    if self.cancelled {
        return
    }

    var stringResponse: String!
    var urlString: String!
    if self.arduinoConnection.arduinoHTTPPort == 80 {
        urlString = String(format: "http://%@/arduino/%@/%i/", arguments: [self.arduinoConnection.arduinoAddress, self.arduinoConnection.pinType.lowercaseString, self.arduinoConnection.arduinoPin])
    } else {
        urlString = String(format: "http://%@:%i/arduino/%@/%i/", arguments: [self.arduinoConnection.arduinoAddress, self.arduinoConnection.arduinoHTTPPort, self.arduinoConnection.pinType.lowercaseString, self.arduinoConnection.arduinoPin])
    }
    let url = NSURL(string: urlString)
    let request = NSURLRequest(URL: url!)
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
        println(NSString(data: data, encoding: NSUTF8StringEncoding))
        stringResponse = NSString(data: data, encoding: NSUTF8StringEncoding) as! String

        if (stringResponse == "") {
            self.arduinoConnection.state = .Failed
            self.arduinoConnection.switchState = false
            self.arduinoConnection.statusText = "Failed To Connect"
        } else {
            self.arduinoConnection.state = .Downloaded
            if (stringResponse == "0") {
                self.arduinoConnection.state = .Downloaded
                self.arduinoConnection.switchState = false
                self.arduinoConnection.statusText = "Connected"
            } else if (stringResponse == "1") {
                self.arduinoConnection.state = .Downloaded
                self.arduinoConnection.switchState = true
                self.arduinoConnection.statusText = "Connected"
            }
        }
    }
}

finished的完成处理程序被毁之前,我的操作状态是NSURLConnection.sendAsynchronousRequest。如何使NSOperation等到NSURLConnection.sendAsynchronousRequest的完成处理程序着火?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-18 19:16:12

您应该重写start而不是main。您必须手动触发isExecutingisFinished的通知。这里的文件

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

https://stackoverflow.com/questions/30310985

复制
相关文章

相似问题

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