如何解决 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中没有错误消息?

如何在 Xcode 5 中添加基于 ip 的 svn 存储库

如何解决错误“请求的URL被拒绝”

使用httpclient调用url出现错误Illegal character in scheme name at index 0解决方案

Xcode 6.3.2 iOS 8.4.1 错误消息:“无法安装开发者磁盘映像”