Swift中参数的外部名称

时间:2017-04-22 15:04:57

标签: swift parameters arguments parameter-passing

我的应用程序因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)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

听起来好像这是由于名称空间冲突造成的。

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

因为根据Swift标准你的功能似乎很差。更好的名称功能的一个例子是:

selectOption(with key: T)

如果被选中的东西是'选项'。即使只是使用您尝试过的函数名称,更好的方法是:

select(by key: T)

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