【问题标题】:External names of parameters in SwiftSwift 中参数的外部名称
【发布时间】:2017-09-19 12:30:53
【问题描述】:

我的应用程序因 NSInvalidArgumentException 而崩溃:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[TtGC5Joker10PickerViewSS select:]: 无法识别的选择器发送到实例 0x7972a390'

我正在尝试使用外部名称作为参数

cell.pickerView.select(byKey: self.model.assignee.value)

/* ... */   

public func select(byKey key: T) {
}

当我从定义中删除外部名称并调用时,一切正常

public func select(_ key: T) {
}

/*...*/

cell.pickerView.select(self.model.assignee.value)

我做错了什么?

【问题讨论】:

    标签: swift parameters arguments parameter-passing


    【解决方案1】:

    在我看来这是由于命名空间冲突造成的。

    请检查您的 JokerPickerView 或其任何超类是否具有签名为 select(:) 的函数,如果是,我建议您以不同的方式命名您的函数。

    根据 Swift 标准,您的函数似乎命名不佳。一个更好的名称函数的例子是:

    selectOption(with key: T)

    如果选择的东西是“选项”。即使只是使用您尝试的函数名称,更好的方法是:

    select(by key: T)

    但是,由于潜在的冲突,我会避免调用函数select

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多