ios - Swift 4 中的额外参数调用

标签 ios swift

我正在尝试在 Swift 4.2 中转换我的 Swift 3.2 代码。我有一个类如下

class Bindable<T>{
    typealias Listener = ((T) -> Void)
    var listener: Listener?

    var value: T {
        didSet {
            listener?(value)
        }
    }

    init(_ v: T) {
        self.value = v
    }

    func bind(_ listener: Listener?) {
        self.listener = listener
    }

    func bindAndFire(_ listener: Listener?) {
        self.listener = listener
        listener?(value)
    }

} 

在 Swift 3.2 中,如果我在下面写

public var otpField = Bindable("")
public var validationErrorText = Bindable(false, "")
public var otp_Status = Bindable(false, "")
public var bindableLoadingObjectOtp = Bindable(false, "")

它工作正常,但是当我尝试在 4.2 中进行转换时,出现错误“调用中的额外参数”(见下图)

enter image description here

请告诉我在 Swift 4.2 中转换时我做错了什么

最佳答案

在 Swift 3 中,两个参数隐式转换为单个元组参数,因此 Bindable(false, "")创建一个 Bindable<(Bool, String)> 类型的对象.

Swift 4.2 显然不会进行这种隐式元组转换,所以你需要做 Bindable((false, ""))获得相同的行为。

关于ios - Swift 4 中的额外参数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539386/

相关文章:

ios - 将 AVPlayerItem 保存到文档目录

ios - 从自定义类 Swift IOS 打开 View

ios - 如何在 NSObject 类 : Swift 中添加动态行为

Swift - 按照使用 gcd 给出的顺序返回多个网络调用时遇到问题

iphone - 如何从 ABAddressBook 中快速获取组成员计数

ios - 在 UserDefaults 中保存 UISwitch 状态

ios - 在 Swift 2.3 中从 UIAlertView 导航到 UIViewController

ios - layoutAttributesForElementsInRect Swift 3(UICollectionView)

javascript - 在下载的 html 文件中访问 c​​ordova 插件

ios - 有什么方法可以获取在 iOS 中使用 flurry 删除应用程序的次数?