Renamed issues in Swift

前端 未结 1 1642
不思量自难忘°
不思量自难忘° 2021-01-15 08:20

I\'m working on programming with Swift for the first time, and in doing so I\'m following along with this tutorial. Unfortunately it looks like the tutorial is a little outd

相关标签:
1条回答
  • 2021-01-15 08:33

    Several basic types have dropped the "NS" prefix in Swift 3.0. Earlier in swift 2.2, we used to have NSUserDefaults, NSURLSession, NSFileManager etc. Now, most of them dropped their prefix "NS" and changed to UserDefaults, URLSession, FileManager etc.

    Your code contains a lot of types with 'NS' prefix. By simply removing it, your code can be converted to Swift 3. Your converted code looks like as shown below:

    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
           }
       }
    }
    

    Also, I don't see any function called parseJSON() in your class. I believe you have to add it.

    0 讨论(0)
提交回复
热议问题