gpt4 book ai didi

swift - 在 Swift 中重命名问题

转载 作者:可可西里 更新时间:2023-11-01 02:08:50 29 4
gpt4 key购买 nike

我是第一次使用 Swift 进行编程,在这样做的过程中我正在关注 this教程。不幸的是,教程看起来有点过时了,而且大部分代码都会抛出构建时错误。最常见的错误是 NSURLSession 已重命名为 URLSession。我试过让 Swift 修复它,但在很多情况下它只是开始抛出警告。我还得到一个 Value type HomeModel has no member'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 中,我们曾经有 NSUserDefaultsNSURLSessionNSFileManager 等。现在,它们中的大多数都去掉了前缀“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() 的函数。我相信你必须添加它。

关于swift - 在 Swift 中重命名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647263/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com