问题标签 [swift4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
103355 浏览

swift - 在 Swift 4 模式下使用 Swift 3 @objc 推理已被弃用?

简而言之,在使用 Xcode 9 Beta 时,我遇到了以下警告:

不推荐在 Swift 4 模式下使用 Swift 3 @objc 推理。请解决已弃用的@objc 推理警告,在启用“使用已弃用的 Swift 3 @objc 推理”日志记录的情况下测试您的代码,并禁用 Swift 3 @objc 推理。**

经过一番研究,我仍然不知道如何解决这个问题。我将非常感谢有关如何解决此问题的任何提示以及对正在发生的事情的解释。

我的目标是更好地理解我的代码发生了什么。

0 投票
5 回答
43928 浏览

ios - 如何在 Xcode 9 上构建 Swift 3 项目?

Xcode 9 Release Notes说支持 Swift 3 编译:

Swift 4 和 Swift 3、Swift 4 和 Swift 3 目标的一个编译器可以在同一个项目中一起编译。

我已经安装了 Xcode 9 测试版。但是当我按下 Build 时,它显示了一堆错误。在 Xcode 9 中使用 Swift 3 时需要做一些特殊的准备工作吗?

升级版: 使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

0 投票
5 回答
47869 浏览

swift - 如何在 Swift 4 中使用 #selector() 处理 @objc 推理弃用?

我正在尝试将项目的源代码从 Swift 3 转换为 Swift 4。Xcode 给我的一个警告是关于我的选择器。

例如,我使用这样的常规选择器将目标添加到按钮:

这是它显示的警告:

'#selector' 的参数指的是 'ViewController' 中的实例方法 'myAction()',它依赖于 Swift 4 中已弃用的 '@objc' 属性推断

添加“@objc”以将此实例方法公开给 Objective-C

现在,点击Fix错误消息会对我的函数执行以下操作:

我真的不想重命名我的所有函数以包含该@objc标记,并且我认为这不是必需的。

如何重写选择器来处理弃用?


相关问题:

0 投票
8 回答
32319 浏览

ios - 无法将 NSAttributedString.DocumentAttributeKey 类型的值转换为 .DocumentReadingOptionKey

我在 SO 的某处发现了这个字符串扩展,它允许我将 html 代码转换为属性字符串:

它在 Swift 3 中运行良好,但在 Swift 4 中,Xcode 抱怨:

无法将类型“NSAttributedString.DocumentAttributeKey”的值转换为预期的字典键类型“NSAttributedString.DocumentReadingOptionKey”

我该如何解决?

0 投票
8 回答
41461 浏览

ios - UIApplication.registerForRemoteNotifications() 只能从主线程调用

Xcode 9 (iOS 11) 在注册推送(远程)通知时向我显示错误/警告。

这是错误消息

在此处输入图像描述

这是代码,我试过了:

错误/警告行:

UIApplication.shared.registerForRemoteNotifications()

如何解决这个问题?

0 投票
1 回答
13006 浏览

ios - iOS:从 Swift 3 迁移(升级)到 Swift 4

iOS 应用程序开发工具的最新重大更新Xcode 9支持Swift 3.2 & 4编程语言。

我的应用程序使用 Swift 3 版本开发,我想转换/迁移完整的源代码Swift 3 to Swift 4。在迁移期间,它向我显示354 errors.

这些错误是可以修复的。错误的解决方案由 Xcode 本身提出。但是有354个错误。我怎样才能一次修复它们?逐个手动修复每个错误将是一项耗时的活动。

是否有任何可行的解决方案来一次修复所有错误。

这是示例的快照。

在此处输入图像描述

0 投票
4 回答
72378 浏览

json - 如何在 Swift 4 的可解码协议中使用自定义键?

DecodableSwift 4 通过协议引入了对原生 JSON 编码和解码的支持。我如何为此使用自定义键?

例如,假设我有一个结构

我可以将其编码为 JSON。

我可以将它编码回一个对象。

但是如果我有一个 json 对象

我将如何告诉该Address地图zip_code上的解码器zip?我相信您使用新CodingKey协议,但我不知道如何使用它。

0 投票
14 回答
36888 浏览

ios - Xcode 9:使用 Swift 3.1 编译的模块无法在 Swift 4.0 中导入

更新到 Xcode 9 后,我尝试构建我的一个项目。

我使用FacebookLogin窗格。我在 FacebookLogin/LoginButton.swift 中有一个编译器错误

在我的目标的构建设置中,Swift 语言版本设置为Swift 3.2

添加了屏幕截图

我想我需要等待 Facebook 更新他们的 pod 吗?或任何其他建议?

谢谢 !

0 投票
1 回答
1407 浏览

swift - 如何将 NSWorkspace 通知迁移到 Swift 4?

在 Swift 3 中,我使用以下代码注册了睡眠和唤醒通知:

但是在迁移到 Swift 4 后,我在应用建议的修复程序后收到此错误:

我如何在 Swift 4 中做到这一点?

0 投票
3 回答
25707 浏览

swift - 从 Swift 2.x 到 Swift 4 的代码迁移

我们有足够大的项目,它是用 Swift 2.x 构建的,现在 Apple 刚刚发布了 Swift 4,因此我们可以选择最新版本的 Swift...

我们需要先将代码迁移到 Swift 3 吗?或者我们可以使用 Xcode 9 直接将我们的代码迁移到 Swift 4?