问题标签 [swift5]

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 投票
2 回答
2148 浏览

ios - Swift 中的@dynamicCallable 是什么?

来自 Apple 的文档:

@dynamicCallable属性使您可以named types像调用函数一样使用简单的语法糖进行调用。主要用例是 动态语言互操作性

为什么要使用@dynamicCallable而不是直接方法?

0 投票
2 回答
3853 浏览

swift4.2 - 更新到 Xcode 10.2 后,Swift 4.2 中“variable.storage”的重新声明无效

我们有一个 iOS 项目。Swift 语言版本是 4.2。我们之前在 Xcode 10.1 中构建它,没有编译错误。

更新到 Xcode 10.2(但保留 Swift 4.2)后,该项目现在充满了诸如(某些变量的名称Invalid redeclaration of 'variable.storage'在哪里)之类的错误。variable这些错误出现在私有的、延迟启动的变量旁边,这些变量的名称在整个项目中都很常用,但不是它们范围内的重新声明;该错误似乎与storage消息的一部分有关。清理并重建并没有解决问题。有什么建议么?

编辑:这些错误只出现在两个类中。由于所有这些重新声明错误,我还错过了另一个合法的编译错误(Xcode 10.2 中的新错误,但足够合法)。在搞砸了一些**之后,我得到了错误消失。似乎是编译器中的一个错误。

** 我的混乱步骤是(1)取消嵌套我遇到这些错误的第一个类,(2)创建一个与非编译类具有相同内容的新类并指向它的引用,(3)注释掉失败的类,(4)找到并修复了合法的编译错误。在这一点上,我不需要与另一个同样给出重新声明错误的类混在一起;现在编译的代码。所以(5)恢复了第一类。因此,这些重新声明错误可能只是误导;如果您发现并修复了所有与迁移相关的错误,希望您不会看到任何这些错误。

0 投票
1 回答
152 浏览

firebase-realtime-database - AuthUI 的初始导航视图控制器在 Xcode 10.2 下不起作用

我最近升级到 Xcode 10.2。在升级之前,我可以使用 Firebase 实时数据库中 AuthUI 的库存初始导航视图控制器,我可以毫无问题地注册并登录到 Firebase,现在我只看到一个“欢迎”屏幕。我使用与以前相同的代码。(请注意,即使使用 Xcode 10.2,身份验证也适用于我的旧项目,我无法使用 AuthUI 的初始导航视图控制器创建任何新项目)

我尝试了与 Xcode 10 和 Swift 4.2 相同的代码我什至从零开始设置另一个测试项目来诊断问题,我就此联系了 Firebase 团队,同时我在这里发布我的问题,希望一个快速的答案。

问题是认证页面无法加载,我无法注册/登录;因此 performSegue 永远不会触发。

0 投票
2 回答
1867 浏览

swift - 如何将 Socket.IO-Client-Swift 导入 Swift 5 项目?

当我将Socket.IO-Client-Swift添加到我的项目时,我收到此错误:

SWIFT_VERSION '5.0' 不受支持,支持的版本有:3.0、4.0、4.2。(在目标“红蜘蛛”中)

0 投票
1 回答
1949 浏览

swift - Why are IBOutlets optionals after swift 5 migration

After migrating the project to swift 5, I'm getting a lot of errors such as

I'm not sure what's causing this. One example where this is happening(there are a bunch) is when I'm setting the view.accessibilityElements. The array is supposed to contain : [Any]?... Any idea what's causing this?

Here is an example:

Here is another example:

When setting the elements above like this, it causes the mentioned error

0 投票
1 回答
486 浏览

swift5 - 转换为 Swift 5 会产生“多个命令产生 x86_64.swiftmodule”错误

我正在尝试让 Xcode 10.2 将我的混合 Objective-C / Swift 项目转换为使用 Swift 5。但是,每当我这样做时,由于以下错误,编译文件

我已经尝试按照其他类似问题中的建议切换到使用“旧版构建系统”,但我想迁移到新的构建系统。

我还尝试按照另一个问题中的建议更改测试目标中的产品模块名称,但这破坏了我的测试。

应用程序和测试都可以正常构建和运行,否则,我在运行 Swift 5 迁移工具时会遇到编译错误。

知道这里发生了什么,或者我可以查看一些文档以更好地理解这一点吗?

谢谢!

0 投票
1 回答
3077 浏览

swift - 在 swift 5 枚举中使用 @unknown 默认值:如何抑制“默认值将永远不会被执行”警告?

假设我有一个现有代码,如下所示:

现在,如果我要在枚举中添加一个新案例,上面的函数会显示一个编译错误,说明 switch 案例必须是详尽的,我将被迫处理新的缺失案例。我会在 switch 语句中添加第三种情况,或者添加默认语句。

现在,我为了处理这种不可预见的枚举案例,我想@unknown default在上面的现有函数中添加一个案例。唯一的问题是,现在它会给我一个警告说Default will never be executed

所以问题是,我如何对我的枚举进行未来验证,以便我可以:

  1. 详尽地处理所有当前的枚举案例,并且
  2. 对未来的未知情况有一个默认的处理机制,并且
  3. 仅当添加较新的案例并且这些案例必须由默认案例处理时才会看到警告。

这意味着,以下代码不应发出警告:

但以下代码应该给出警告:

这可以通过@unknown 或其他方式实现吗?

0 投票
1 回答
88 浏览

swift - 为什么访问具有父关系的子类 NSManagedObject 的 String 参数会崩溃?

我为两个核心数据实体生成了类。第一个称为地址,是一个抽象实体。第二个称为 Person,它继承自 Address。出于此测试的目的,我添加了一些示例托管属性。而且我已经向 Person 类添加了一个非托管 String 属性。访问 Person 类的字符串属性会崩溃。为什么会崩溃?

Address 和 Person 类由 Xcode 自动生成,除了额外的参数:let foo = "Foo"

如果我修改代码以使 Person 直接从 NSManagedObject 继承而不是 Address,那么代码可以正常工作并且不会崩溃。

自动生成的地址类:

自动生成的人员类,“foo”参数除外:

问题代码

更新:如果 foo 被定义为

那么打印语句不会崩溃,而是将值解释为“nil”并打印出来。

所以我的问题变成了:为什么这个被分配为常数的值在幕后被重置为零?

0 投票
3 回答
6113 浏览

ios - 应用程序随机崩溃,NSInvalidArgumentException 无法识别的选择器发送到实例 0x800000000000000

我的应用程序使用核心数据。我最近升级到 Xcode 10.2 和 swift 5,从那以后我收到与核心数据有关的随机崩溃。

从我收集到的信息来看,这是在尝试从后台线程更改核心数据时发生的(从服务器提取新数据后)。

我收到以下错误消息

或者

不仅我的代码可以正常工作,而且这个实例编号看起来很可疑

我的应用程序连接到 crashlytics,它捕获了其中一个错误。这是它捕获的堆栈跟踪:

提到的所有缺失的dylib是什么?

我尝试使用 DispatchQueue 将所有核心数据活动移动到主线程,但没有成功。

我已经从模拟器中删除了该应用程序并重新安装它,到目前为止崩溃并没有重复。关于导致这次崩溃的任何想法?

0 投票
1 回答
801 浏览

swift - 在继续功能之前等待图像上传 - Swift 5 Firebase Storage

我正在尝试使用 Firebase 存储上传图片。我遇到的问题是当我调用我的图像上传函数时,上传任务非常慢,当它实际被进一步调用时,它最终在我的主函数中最后运行。

有没有办法等待 storageRef.putData 在继续其余功能之前完成?

将压缩质量从 1 降低可能会更快吗?

这是我的功能:

更新功能——

示例主函数:

控制台打印: