【问题标题】:Swift Passing specific values in methods as argumentsSwift将方法中的特定值作为参数传递
【发布时间】:2019-01-23 00:55:57
【问题描述】:

我怎样才能使用户只能传递特定值的方法,例如

button.setTitle("SKIP", for: .normal)

setTitle 方法在 "for" 后面接受特定参数,我们只需按 。 (点)并显示要传递的值的建议。

我想做同样的事情,例如我想做一个计算两点之间距离的方法,

func distanceBetween(loc1: CLLocation, and loc2: CLLocation, unit: String) -> CLLocationDistance {}

这里用户将位置1和位置2作为参数传递,我想在他传递单位时限制用户,他应该只有3个选项,公里,英里和米。

【问题讨论】:

  • enum 是您所需要的。
  • 请您分享指导我方向的代码 sn-p 或任何有示例的教程。

标签: ios methods parameter-passing swift4


【解决方案1】:

使用您需要的值创建一个enum,并将该枚举用作参数。

enum Unit {
     case km
     case miles
     case meters
}

现在你的函数会变成:

func distanceBetween(loc1: CLLocation, and loc2: CLLocation, unit: Unit) -> CLLocationDistance {
     switch unit {
     case .km:
         // Do something for kilometers
     case .miles:
         // Do something for miles
     case .meter:
         // Do something for meters
}

如果您添加另一个单元,您的编译器将抛出一个错误,指出您没有指定 default 大小写,您将立即处理它。

您的函数调用将采用Unit 中的任何一个作为参数。示例:

distanceBetween(loc1: location1, and loc2: location2, unit: .km)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2010-11-16
    • 2013-04-09
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多