這個名單是這樣的:分配可變參數的參數變量
public enum NodeFeature: UInt16 {
case relay = 0x01
case proxy = 0x02
case friend = 0x04
case lpn = 0x08
}
public struct NodeFeatures {
public let rawValue: UInt16
public init(rawValue: UInt16) {
self.rawValue = rawValue
}
public init(features: NodeFeature...) {
var rawValue = UInt16(0)
for feature in features {
rawValue |= feature.rawValue
}
self.rawValue = rawValue
}
public func hasFeature(_ feature: NodeFeature) -> Bool {
return rawValue & feature.rawValue > 0
}
}
這是從服務器的響應:
"feature": {
"relay": true,
"proxy": false,
"friend": false,
"lowPower": false
}
現在我需要創建的NodeFeatures
只有true
值的實例:
var features = [NodeFeature]() // how to declare and prepare the list of args?
if true {
features.append(.first)
} else if true {
features.append(.third)
}
let wrapper = NodeFeatures(features: features) //... to pass it as a variable to the initializer.
但是錯誤如下:
無法將類型一個可變參數的「[NodeFeature]」到預期參數類型「NodeFeatures」
嘗試改變的init(功能:功能...)來初始化(特點: [Feature])。您正在初始化多個枚舉情況而不是單個情況。 –
不,不是這種情況,我需要從另一邊準備:)初始化程序中的參數來自SDK ... –
您可以提供更多信息嗎?您正在使用init()完成的部分。是明確的參數類型不匹配。 –