自从我升级到Xcode 7测试版后,我有一个无法修复的错误。这是我的DataManager.swift的完整代码
import Foundation
var TopAppURL:String = String()
var numberAsked:String = String()
class DataManager {
class func getInfo(ID : String){
TopAppURL = "http://sweetapi.com/?=\(ID)"
numberAsked = ID
}
class func loadDataFromURL(url: NSURL, completion:(data: NSData?, error: NSError?) -> Void) {
var session = NSURLSession.sharedSession()
// Use NSURLSession to get data from an NSURL
let loadDataTask = session.dataTaskWithURL(url, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
if let responseError = error {
completion(data: nil, error: responseError)
} else if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode != 200 {
var statusError = NSError(domain:"com.raywenderlich", code:httpResponse.statusCode, userInfo:[NSLocalizedDescriptionKey : "HTTP status code has unexpected value."])
completion(data: nil, error: statusError)
} else {
completion(data: data, error: nil)
}
}
})
loadDataTask.resume()
}
class func getDataFromSweetApiOk(success: ((IDdata: NSData!) -> Void)) {
//1
print("DataManager loads \(TopAppURL)")
loadDataFromURL(NSURL(string: TopAppURL)!, completion:{(data, error) -> Void in
//2
if let urlData = data {
//3
success(IDdata: urlData)
}
})
}
}
因此,我得到了以下错误:“无法使用类型为”(NSURL,completionHandler:(NSData!,NSURLResponse!,NSError!)的参数列表调用“dataTaskWithURL”-
func dataTaskWithURL(_ url: NSURL,
completionHandler completionHandler: ((NSData!,
NSURLResponse!,
NSError!) -> Void)?) -> NSURLSessionDataTask
已更改为
func dataTaskWithURL(_ url: NSURL,
completionHandler completionHandler: (NSData?,
NSURLResponse?,
NSError?) -> Void) -> NSURLSessionDataTask?
在iOS9中,completionHandler不再是可选的,completionHandler中的所有参数现在都是可选的而不是隐式展开的选项。
现在,为了在将来对可选系统进行更改时提供帮助,请尽量避免(data:NSData!,response:NSURLResponse!,error:NSError!)-
这将消除代码中的膨胀,从而提高可读性。
要在评论中解决您的问题,请查看此问题。
问题内容: 听起来很荒谬,但是我无法修复这段代码: 无论我如何写闭包,我总是会遇到此错误: 无法使用类型为’ ‘ 的参数列表调用’filter ‘ 定义如下: 并且是Swift类(不继承自NSObject) 我在许多其他地方都使用了几乎相同的产品,而没有出现问题。有什么建议? 问题答案: 如果您不符合以下条件,则会收到该错误:
问题内容: 当我编写代码以使用indexOf从数组中查找项目时,它向我显示了上述错误。这是我的代码:- 问题答案: 为了使用的,必须采取Equatable协议。只有采用此协议,列表才能将一个项目与其他项目进行比较以找到所需的索引
我刚刚迁移到Xcode7/IOS9,我的部分代码不兼容。 我从Xcode得到以下错误: “ 不能使用类型为”(字符串)“的参数列表调用”计数“” 这是我的代码:
问题内容: 我想使用快速的高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews。线 导致错误“无法使用类型’(()-> )’的参数列表调用’map’” 我现在想知道编译器需要我什么。 问题答案: 我会说地图不适合这种操作。它基于其他sequence元素创建了一个新序列,但是您不想创建一个序列,而只想遍历它们并将一个函数应用于它们。暂时没有与您想要的功能匹配的高阶函
使用新的Swift 1.2更新到Xcode 6.3.1,旧方法更改为,但是当我切换到使用时,它总是抛出此错误消息: 无法使用类型为“(String)”的参数列表调用“count” 这个片段是我从Apple doc复制过来的,但是还是不行。
问题内容: 出现错误: 无法使用类型为参数的列表进行调用 如何解决呢? 问题答案: 使用Xcode7beta6: 带有Xcode7发行版: