我在Xcode 9 Beta 3中使用了3rd party库。在完成调用中出现以下错误,我无法解决此错误:
DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
self.animationView?.alpha = 0
self.containerView.alpha = 1
completion?() // -> Error: Missing argument parameter #1 in call.
}
并在完成功能中得到以下警告:
func openAnimation(_ completion: ((Void) -> Void)?) {
// -> Warning: When calling this function in Swift 4 or later, you must pass a '()' tuple; did you mean for the input type to be '()'?
}
在Swift 4中,对元组的处理比以往更加严格。
这种关闭类型:(Void)->Void
表示一个关闭
Void
Void
,表示不返回任何值因此,请尝试以下任一方法:
将类型的值传递Void
给闭包。(一个空元组()
是的唯一实例Void
。)
completion?(())
要不然:
更改参数的类型completion
。
func openAnimation(_ completion: (() -> Void)?) {
//...
}
请记住,两种类型的(Void)->Void
和()->Void
甚至在斯威夫特3.不同的,所以后者将是适当的,如果你打算代表 不带参数的闭合型 。
这项更改是SE-0029从功能应用程序中删除隐式元组splat行为的一部分,该行为据说已在Swift
3中实现,但看来Swift 3尚未完全实现。
在这里,我向您展示了一个简化的检查代码,您可以在操场上检查差异。
import Foundation
//### Compiles in Swift 3, error and warning in Swift 4
class MyClass3 {
func openAnimation(_ completion: ((Void) -> Void)?) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
completion?()
}
}
}
//### Compiles both in Swift 3 & 4
class MyClass4 {
func openAnimation(_ completion: (() -> Void)?) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
completion?()
}
}
}
我在Snowflake中创建了一个函数,其中包含两个“日期”参数: 我假设我错过了一些简单的东西。是否因为I已将参数声明为“日期”数据类型,而select语句将我的日期值归类为字符串? 提前致谢
此模式抛出TypeScript错误: 类型为“(string | number)[]”的参数不能分配给类型为“string[]| number[]”的参数 我理解这是因为TypeScript编译器会将其视为字符串和数字混合的数组。 是否有一种类型安全的方法来实现这一点?我只能想投给任何感觉不好的[]:
这里变量x(在主)的值是6,这是正确的,但当我写同样的事情在system.out.println== 当我尝试在print语句中放入x时,它工作得很好。但我想知道它给出错误的原因。 错误:
问题内容: 我有一个看起来像这样的方法: 因此,我期望传递的集合是实现Marshallable接口的Enum。如果我在运行时具有具体的Enum类型,则可以正常工作,但是我编写了一个测试方法,该方法从类对象动态创建一个Enum列表(实现Marshallable),并且无法将此列表传递给上面的方法。 标记的行将给出编译错误。我不知道如何在不更改方法签名的情况下传递列表。 问题答案: 您需要对泛型辅助方
您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof
我正在尝试为我的react-native项目生成一个签名的APK。我收到错误消息错误:“未编译的PNG文件作为参数传递。必须先编译成.flat文件..” 如何解决此问题?我已经研究了这个问题,并尝试将添加到gradle-wrapper.properties文件中。 第一步是 但是,我没有看到任何关于为my-release-key.keystore文件指定位置的内容。直到我用了