Swift 中的重命名问题

2023-12-02

我是第一次使用 Swift 进行编程,在此过程中我遵循this教程。不幸的是,该教程看起来有点过时,并且大多数代码都会引发构建时错误。最常出现的错误是NSURLSession has been renamed to URLSession。我试过让 Swift 修复它,但在很多情况下它只是开始抛出警告。我也收到了Value type HomeModel has no member'parseJSON'错误以及NSDat is not implicitly convertible to data错误。据我所知, 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 etc.

您的代码包含许多带有“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()在你的班级里。我相信你必须添加它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中的重命名问题 的相关文章

  • 如何使用 SwiftUI 拖动工作滑块

    我想拖动一个滑块 当然也让它滑动 我可以做其中之一 但我不能两者都做 如何拖动并拥有可用的滑块 我也尝试找到一种方法来删除手势 但我找不到方法来做到这一点 还尝试了 Apple Composition SwiftUI Gestures 文档
  • 更改 UIAlertController 的标题字体大小

    我正在尝试更改标题fontSize in an UIAlertController 但我无法管理如何设置我的NSMutableAttributedString to the title 财产 所以我一直在创造NSMutableAttribu
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • Xcode 和 Waze 集成

    我正在尝试整合我的app with waze http www waze com 有人知道如何调用位智并发送坐标吗 我没有找到任何 API 或其他相关信息 void navigateToLatitude double latitude lo
  • 可以转换为 Swift 5

    我在 Xcode 10 2 中收到此警告 可以转换为 Swift 5 当我单击此错误时 它会打开此窗口 当我们点击Next会发生什么 swift 的当前版本是 swift5 仅在 Xcode 10 2 中受支持 而您在 Xcode 10 2
  • 快速从 appDelegate 中 popToRootViewController

    我试图从应用程序委托弹出到导航堆栈的根视图控制器 并且在将 obj c 中的内容转换为 swift 时遇到一些问题 obj c 中的工作原理 UINavigationController navigationController UINav
  • 如何在 Swift 4 中以编程方式将 IBAction 添加到 uibutton?

    如何以编程方式将 IBAction 添加到 uibutton button addTarget self action Selector buttonAction for touchUpInside func buttonAction se
  • UINavigationControllerDelegate的didShowViewController方法被调用了两次

    class ViewController UIViewController UINavigationControllerDelegate override func viewDidLoad super viewDidLoad navigat
  • “无法调用非函数类型‘HTTPURLResponse’的值?”(Alamofire 4.0) [Swift 3.0]

    我收到此错误 无法调用非函数类型 HTTPURLResponse 的值 关于该部分 response request response data error 我想知道是否有人可以帮助我解决这个问题 Alamofire download ur
  • 如何过滤掉数组的数组

    您好 我有一个包含多个值的数组 我想尝试过滤掉搜索栏的索引 英语术语的一个例子是这样的 给我名称 Name2 的索引 并通过检查每个索引的第一个值中的所有字符串来执行此操作 Code Multiple Errors var received
  • 根据图像制作具有 UIImageView 高度的 UICollectionViewCells

    我想做一个UICollectionView单元格的宽度是屏幕的宽度 但高度取决于单元格的宽高比UIImageView inside 在我目前的实施中 所有UICollectionViewCell实例是正方形 这不是我想要的 我想以某种方式使
  • 安装 Ruby 后,MAC OS X 上的活动开发人员路径无效

    我收到此错误 xcrun 错误 无效的活动开发人员路径 Applications Xcode app 缺少 xcrun Applications Xcode app usr bin xcrun This solution https sta
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • iOS Swift 检测键盘事件

    我能以某种方式检测来自 iOS 键盘的事件吗 我想检测此类事件UIViewController哪个没有UITextField或任何此类物体 我只有四个圆圈UIView我想在按下键盘上的按钮时将它们涂成不同的颜色 您没有任何对象可以从键盘获取
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 如何在 Swift 语言中传递错误指针?

    我试图在 swift 中传递错误指针 但无法这样做 编译器抱怨 NSError 无法转换为 NSErrorPointer var error NSError NSError var results context executeFetchR
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • 带有 Group Unwind 和 Project 的 MongoDb C# 类型聚合

    我有一个这样的集合 id 1 OtherProperties 100 PersonInventory FirstName Joe MiddleName Bob LastName Blogs PersonId 1 id 2 OtherProp
  • UITextview 隐藏光标/更改光标颜色

    在我的应用程序中 在 UITextview 中我想隐藏光标 如果这是不可能的 那么我想改变光标的颜色 我们可以这样做吗 我已经搜索过它 但只得到了 UITextfield 的答案 Thanks 在iOS 7上 您只需将文本视图的tintCo
  • 如何在 PHP 中使用 FTP 从另一台服务器传输文件

    我正在尝试找到一种在服务器之间传输文件的方法 源服务器可以是任何平台 我们甚至可能对它一无所知 除了它支持 FTP 之外 我在 SO 上找到的许多帖子建议使用 scp sftp rsync 或 wget 来实现此目的 鉴于这个 PHP 脚本
  • 如何在 SQL Server 中使用带框架的窗口函数执行 COUNT(DISTINCT)

    搭载这个可爱的问题 可以使用 DISTINCT 进行分区函数 COUNT OVER 我希望计算不同值的移动计数 大致如下 Count distinct machine id over partition by model order by
  • C++11 之前的初始值设定项列表中同一变量的多个突变是否为未定义行为

    考虑以下代码 int main int count 0 int arrInt 2 count count return 0 如果我们使用以下命令编译代码clang std c 03它会产生以下警告 活生生的例子 warning multip
  • redbean - 嵌套豆 - 出了什么问题?

    我正在尝试建立一个简单的嵌套 bean 关系 我错过了什么 我真的很喜欢 redbean 简单的 ORM 语法 并且真的很想使用它 但我似乎无法让它为我工作 还有其他类似的东西可能更成熟吗 我想要一些轻量且简单的东西来构建 WordPres
  • setCloseButtonIcon(Bitmap drawable) 不适用于 ChromeCustomTab 中的 SVG

    我需要更改 ChromeCustomTab Android 中的默认十字图标 我使用以下代码通过后退图标更改它 Bitmap icon BitmapFactory decodeResource context getResources R
  • 无法使用 spring 连接到 Azure SQL 数据库服务器

    我能够连接到具有 IP 地址的数据库 但是如果 我在 Azure SQL 数据库服务器中创建了我的数据库 因为我无法使用 spring 配置 Java Web 应用程序进行连接 它显示错误说 与主机 vinayaka cloudapp ne
  • Shell 脚本中的字符串连接错误

    我是 Shell 脚本编写的初学者 我使用了一个变量来存储值A MyScript 我尝试在后续步骤中连接字符串 A new 令我惊讶的是它不起作用并且 A new worked 您能帮我理解这些细节吗 Thanks Shell 变量名由字母
  • 显示来自 BroadcastReceiver 的复杂 Toast

    我想知道是否有人可以帮助我 我试图在收到短信时显示 toast 元素 这个 toast 应该包含一个布局 其中有一个图像 短信图标 和 2 个文本视图 发件人 消息 如果我从活动中调用以下方法 它将按预期工作 public void sho
  • 为什么 item.getMenuInfo() 为空?

    在我的 ListView 项目中 我有 4 8 个 ImageView 其中一些是不可见的 具体取决于某些值 和 4 个 TextView 当我长按 Listview 的项目时 AdapterContextMenuInfo item get
  • 如何判断 DOM 元素在当前视口中是否可见?

    有没有一种有效的方法来判断 DOM 元素 在 HTML 文档中 当前是否可见 出现在viewport 问题涉及 Firefox Now 大多数浏览器支持获取边界客户端矩形方法 这已成为最佳实践 使用旧答案非常慢 不准确 and 有几个错误
  • 不支持的操作:不可写 python

    电子邮件验证 Email validator import re def is email email input Enter your email pattern w 1 w w file open ValidEmails txt r i
  • 如何为 Eclipse 编写插件? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我如何开始编写插件Eclipse 我找过文档 但不幸的是很少或者很差 那么有哪些文章可以推荐呢 Eclipse 和 IBM 的主站点上有一些非常好的资源和教程 最好的方法之一是选
  • mysql_insert_id线程安全吗?

    我正在使用 MySQL C API 构建数据库客户端应用程序 并且我需要获取 INSERT 语句中的最后一个自动增量值 因此 mysql insert id 可以做到 但是这个客户端是多线程的 并且是这样的一段代码 mysql query
  • 如何在Python中使列表只包含不同的元素? [复制]

    这个问题在这里已经有答案了 我有一个 Python 列表 如何使其值唯一 最简单的方法是转换为集合 然后再转换回列表 my list list set my list 这样做的一个缺点是它不会保留订单 您可能还想首先考虑使用集合 而不是列表
  • 保护正在访问的用户文件,以便只有所有者才能访问?

    我正在用 php 编写一个 Web 应用程序 用户可以在其中上传自己的文件或图像 但如何保护这些文件不被所有者以外的其他人访问 想想 dropbox 保护这些文件的机制是什么 我尝试过搜索 但没有得到任何关于此的信息 任何指向教程的指针或链
  • 使用进程名称获取另一个程序的窗口标题

    这个问题可能很基本 但我很难破解它 我假设我必须使用一些东西ctypes windll user32 请记住 我几乎没有使用这些库的经验 甚至没有ctypes作为一个整体 我已经使用此代码列出了所有窗口标题 但我不知道应该如何更改此代码以获
  • 使用html5(提醒应用程序)访问电话闹钟(原生资源)

    这些是我的技术 HTML5 Jquery 移动 Jquery Javascript Css Cordova 我们正在使用 HTML 5 开发应用程序 我们需要访问手机 Android iPhone Windows Phone 资源 例如闹钟
  • Swift 中的重命名问题

    我是第一次使用 Swift 进行编程 在此过程中我遵循this教程 不幸的是 该教程看起来有点过时 并且大多数代码都会引发构建时错误 最常出现的错误是NSURLSession has been renamed to URLSession 我