【发布时间】:2015-05-15 11:52:10
【问题描述】:
在一个 Swift 应用程序中,我创建了一个带有一个函数的枚举,该函数将一个 CLBeacon 对象数组作为它的唯一参数(即[CLBeacon])。我没有遇到枚举错误,但是当我尝试使用枚举时,clang 抱怨我无法使用([CLBeacon]) 的参数列表调用该函数。代码如下:
enum BeaconArrayState {
case NoObjectOnScreen, FirstObjectOnScreen, FirstObjectOffScreen
mutating func check(beacons: [CLBeacon]) -> BeaconArrayState {
switch self {
case FirstObjectOnScreen:
return .FirstObjectOnScreen
case FirstObjectOffScreen:
return .FirstObjectOffScreen
case NoObjectOnScreen:
if beacons.count > 0 {
println("push to screen associated with beacon \(beacons[0].minor)")
}
return .NoObjectOnScreen
}
}
}
var beaconArrayState: BeaconArrayState = .NoObjectOnScreen
func beaconManager(manager: AnyObject!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {
let knownBeacons = beacons.filter{$0.proximity != CLProximity.Unknown}
//send updated beacons array to perform parseBeacons
NSNotificationCenter.defaultCenter().postNotificationName("updateNotificationPriorities", object: knownBeacons)
beaconArrayState = BeaconArrayState.check(knownBeacons as [CLBeacon])
}
这给出:错误 - Cannot invoke 'check' with argument list of type '([CLBeacon])'
case语句中的代码暂时不相关,尚未确定,但为什么调用时出错?
【问题讨论】:
-
与此处的错误基本相同:stackoverflow.com/questions/29648348/… 或此处:stackoverflow.com/questions/30248855/…。您已经定义了一个实例方法,但将其称为类型方法。
标签: function swift enums arguments