Swift中的重命名问题

Swift中的重命名问题,swift,xcode,Swift,Xcode,我第一次使用Swift进行编程,在这样做的过程中,我遵循了教程。不幸的是,教程看起来有点过时,而且大部分代码都会抛出构建时错误。最常发生的错误是NSURLSession已重命名为URLSession。我试着让Swift修复它,但在很多情况下它只是开始抛出警告。我还得到了一个值类型HomeModel没有成员'parseJSON'错误以及NSDat不能隐式转换为数据的错误。据我所知,NSURL似乎不再使用,但我不确定其他两个。鉴于这是我参与的第一个Swift项目,我不确定如何修复这些问题。有人能提供

我第一次使用Swift进行编程,在这样做的过程中,我遵循了教程。不幸的是,教程看起来有点过时,而且大部分代码都会抛出构建时错误。最常发生的错误是
NSURLSession已重命名为URLSession
。我试着让Swift修复它,但在很多情况下它只是开始抛出警告。我还得到了一个
值类型HomeModel没有成员'parseJSON'
错误以及
NSDat不能隐式转换为数据的错误。据我所知,NSURL似乎不再使用,但我不确定其他两个。鉴于这是我参与的第一个Swift项目,我不确定如何修复这些问题。有人能提供一些关于如何纠正这些错误的见解吗

代码如下:

import Foundation

protocol HomeModelProtocal: class {
    func itemsDownloaded(items: NSArray)
}


class HomeModel: NSObject, NSURLSessionDataDelegate {

    //properties

    weak var delegate: HomeModelProtocal!

    var data : NSMutableData = NSMutableData()

    let urlPath: String = "http://testurl.com/service.php" //this will be changed to the path where service.php lives


    func downloadItems() {

        let url: NSURL = NSURL(string: urlPath)!
        var session: NSURLSession!
        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()


        session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)

        let task = session.dataTaskWithURL(url)

        task.resume()

    }

    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
        self.data.appendData(data);

    }

    func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
        if error != nil {
            print("Failed to download data")
        }else {
            print("Data downloaded")
            self.parseJSON()
        }

    }
}

一些基本类型在Swift 3.0中删除了“NS”前缀。在swift 2.2的早期,我们曾经有
NSUserDefaults
NSURLSession
NSFileManager
等。现在,他们中的大多数人放弃了前缀“NS”,改为
UserDefaults
URLSession
FileManager

您的代码包含许多前缀为“NS”的类型。只需删除它,您的代码就可以转换为Swift 3。转换后的代码如下所示:

protocol HomeModelProtocal: class {
   func itemsDownloaded(items: NSArray)
}

class HomeModel: NSObject, URLSessionDataDelegate {

   //properties

   weak var delegate: HomeModelProtocal!

   var data : Data = Data()

   let urlPath: String = "http://testurl.com/service.php" //this will be changed to the path where service.php lives


   func downloadItems() {

      let url: URL = URL(string: urlPath)!
      var session: URLSession!
      let configuration = URLSessionConfiguration.default

      session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

      let task = session.dataTask(with: url)

      task.resume()
   }

   func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
       self.data.append(data);
   }

   func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
       if error != nil {
          print("Failed to download data")
       }else {
          print("Data downloaded")
          self.parseJSON() // This class doesn't have a function parseJSON(). So, it's giving you an error like this
       }
   }
}
另外,我在您的类中没有看到任何名为
parseJSON()
的函数。我相信你必须加上它