我有一个NSOperation子类,它具有以下main函数:
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的完成处理程序着火?
发布于 2015-05-18 19:16:12
您应该重写start而不是main。您必须手动触发isExecuting和isFinished的通知。这里的文件。
https://stackoverflow.com/questions/30310985
复制相似问题