当前位置: 首页 > 知识库问答 >
问题:

无法在Swift 2中使用参数列表调用“sendAsynchronousRequest”

莫乐
2023-03-14

我目前正在重写我的Swift 1.2代码的一部分,以与Swift 2.0兼容。实际上,我不知道对“sendAsynchronousRequest”做了哪些更改-目前我的所有请求都失败了

NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in})

无法使用类型为“(NSURL请求,队列:NSOPERATIONQueue,完成处理程序:(NSURL 响应!,NSData!,NSError!)

你知道出了什么问题吗?

共有3个答案

皇甫飞飙
2023-03-14

由于 NSURL 连接.send异步请求在 iOS 9 中已弃用。应使用 NSURLSession 公共 func dataTaskWithRequest(请求: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -

公孙智
2023-03-14

看起来问题出在你的完成块中的隐式解包选项上。只要把它设置成可选的就可以了,

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse?, data: NSData?, error: NSError?) in
  let string = NSString(data: data!, encoding: NSISOLatin1StringEncoding)
  print("Response \(string!)")
}
钱稳
2023-03-14

对于Swift 1.2和Xcode 6.3,< code > sendasynchronous request:queue:completion handler:的签名为:

class func sendAsynchronousRequest(request: NSURLRequest,
    queue: NSOperationQueue!,
    completionHandler handler: (NSURLResponse!, NSData!, NSError!) -> Void)

但是,在Swift 2和Xcode 7 beta中,< code > sendasynchronous request:queue:completion handler:的签名已经更改,现在为:

// Note the non optionals, optionals and implicitly unwrapped optionals differences
class func sendAsynchronousRequest(request: NSURLRequest,
    queue: NSOperationQueue,
    completionHandler handler: (NSURLResponse?, NSData?, NSError?) -> Void)

因此,转向Swift 2和Xcode 7 beta,您必须更改您的< code>completionHandler参数实现,并确保您的< code>queue参数是非可选的。

 类似资料:
  • 问题内容: 听起来很荒谬,但是我无法修复这段代码: 无论我如何写闭包,我总是会遇到此错误: 无法使用类型为’ ‘ 的参数列表调用’filter ‘ 定义如下: 并且是Swift类(不继承自NSObject) 我在许多其他地方都使用了几乎相同的产品,而没有出现问题。有什么建议? 问题答案: 如果您不符合以下条件,则会收到该错误:

  • 问题内容: 当我编写代码以使用indexOf从数组中查找项目时,它向我显示了上述错误。这是我的代码:- 问题答案: 为了使用的,必须采取Equatable协议。只有采用此协议,列表才能将一个项目与其他项目进行比较以找到所需的索引

  • 问题内容: 出现错误: 无法使用类型为参数的列表进行调用 如何解决呢? 问题答案: 使用Xcode7beta6: 带有Xcode7发行版:

  • 我刚刚迁移到Xcode7/IOS9,我的部分代码不兼容。 我从Xcode得到以下错误: “ 不能使用类型为”(字符串)“的参数列表调用”计数“” 这是我的代码:

  • 问题内容: 我想使用快速的高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews。线 导致错误“无法使用类型’(()-> )’的参数列表调用’map’” 我现在想知道编译器需要我什么。 问题答案: 我会说地图不适合这种操作。它基于其他sequence元素创建了一个新序列,但是您不想创建一个序列,而只想遍历它们并将一个函数应用于它们。暂时没有与您想要的功能匹配的高阶函

  • 我目前试图通过反射执行一个方法,但方法参数只是一个列表。 该方法如下所示: 但Java对待他们就像 问题是参数的长度不同,该方法可以有任意数量的参数。 有没有办法解决这个问题?