如何解决 Xcode 错误消息 'url' instance member cannot be used on type 'view controller'
Posted
技术标签:
【中文标题】如何解决 Xcode 错误消息 \'url\' instance member cannot be used on type \'view controller\'【英文标题】:How to solve Xcode error message 'url' instance member cannot be used on type 'view controller'如何解决 Xcode 错误消息 'url' instance member cannot be used on type 'view controller' 【发布时间】:2016-12-22 14:11:08 【问题描述】:我在 Xcode 中输入了以下 swift 代码,它显示错误消息
“url”实例成员不能用于“视图控制器”类型
这是我的代码-
let url = NSURL(string: "http://www.***.com")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) (data, response, error) -> Void in
【问题讨论】:
不要在控制器的根目录下使用NSURLSession.sharedSession().dataTaskWithURL(url)
。在方法中执行。
【参考方案1】:
这是 Swift 3 的代码和 Xcode 8.2.1(当前版本)的错误信息:
let url = URL(string: "http://www.***.com")!
var task = URLSession.shared.dataTask(with: url)
(data: Data?, response: URLResponse?, error: Error?) in
第 2 行的错误信息现在是:
不能在属性初始化器中使用实例成员“url”;属性初始化器在“self”可用之前运行
我认为这更清楚了。创建task
必须稍后在类似viewDidLoad
的函数中完成。
这段代码可以工作(好吧,至少它可以编译):
var task: URLSessionTask?
override func viewDidLoad()
super.viewDidLoad()
if let url = URL(string: "http://www.***.com")
task = URLSession.shared.dataTask(with: url)
(data: Data?, response: URLResponse?, error: Error?) in
// Handle response and errors here
// Do any additional setup after loading the view.
【讨论】:
问题标签是 Swift 2 是的,我应该提到为什么我在 Swift 3 上解释它:错误消息导致解决方案,它以相同的方式解决。 你甚至没有打电话给简历。 BTW Swift 是一种类型推断语言。您只需要传递参数名称,无需传递类型。URLSession.shared.dataTask(with: url) data, response, error in
【参考方案2】:
它应该以下面的方式调用。
let url = "put the urls here"
let urlRequest = URLRequest(url: URL(string: url)!)
let urlSession = URLSession.shared
let task = urlSession.dataTask(with: rssRequest) (data, response, error) in
//get your response and error here
步骤: 1.创建url请求 2.创建共享会话 3.从url下载内容
【讨论】:
以上是关于如何解决 Xcode 错误消息 'url' instance member cannot be used on type 'view controller'的主要内容,如果未能解决你的问题,请参考以下文章
将应用程序上传到 iTunes 连接时如何解决 Xcode 验证错误?
如何在 Xcode 5 中添加基于 ip 的 svn 存储库
使用httpclient调用url出现错误Illegal character in scheme name at index 0解决方案