[英]How to access these dictionary values? (Swift)
我有一個名為eegsnapshot.swift的文件,該文件從EEG傳感器讀取值並將它們存儲在字典中(我認為呢?)。 我在嘗試訪問這些值時遇到麻煩。 我是Swift的新手,已經對Arrays和Dictionaries做過一些工作,但是這里使用的方法比我以前遇到的要復雜得多。
誰能給我一些從字典中訪問值的見解,例如“ eegDelta”?
我希望使用這些值來控制SceneKit中的動畫,但需要能夠首先訪問它們。
public struct EEGSnapshot {
public let delta: Int
public let theta: Int
public let lowAlpha: Int
public let highAlpha: Int
public let lowBeta: Int
public let highBeta: Int
public let lowGamma: Int
public let highGamma: Int
public static let allZeros = EEGSnapshot()
public init(dictionary: NSDictionary = [:]) {
func extractPoint(key: String) -> Int {
return dictionary[key] as? Int ?? 0
}
delta = extractPoint("eegDelta")
theta = extractPoint("eegTheta")
lowAlpha = extractPoint("eegLowAlpha")
highAlpha = extractPoint("eegHighAlpha")
lowBeta = extractPoint("eegLowBeta")
highBeta = extractPoint("eegHighBeta")
lowGamma = extractPoint("eegLowGamma")
highGamma = extractPoint("eegHighGamma")
}
}
public extension NSDictionary {
public convenience init(eegSnapshot: EEGSnapshot) {
self.init(objects: [eegSnapshot.delta, eegSnapshot.theta, eegSnapshot.lowAlpha, eegSnapshot.highAlpha, eegSnapshot.lowBeta, eegSnapshot.highBeta, eegSnapshot.lowGamma, eegSnapshot.highGamma],
forKeys: ["eegDelta", "eegTheta", "eegLowAlpha", "eegHighAlpha", "eegLowBeta", "eegHighBeta", "eegLowGamma", "eegHighGamma"],
count: 8)
}
}
我試過了
var deltaValue = EEGSnapshot["eegDelta"]
相似,但出現錯誤“ Type EEGSnapshot.Type沒有下標成員”。
您可以像這樣執行Dictionary <> EEGSnapshot轉換:
public struct EEGSnapshot {
public let delta: Int
public let theta: Int
public let lowAlpha: Int
public let highAlpha: Int
public let lowBeta: Int
public let highBeta: Int
public let lowGamma: Int
public let highGamma: Int
public static let allZeros = EEGSnapshot()
public init(dictionary: [String : Int] = [:]) {
self.delta = dictionary["eegDelta"] ?? 0
self.theta = dictionary["eegTheta"] ?? 0
self.lowAlpha = dictionary["eegLowAlpha"] ?? 0
self.highAlpha = dictionary["eegHighAlpha"] ?? 0
self.lowBeta = dictionary["eegLowBeta"] ?? 0
self.highBeta = dictionary["eegHighBeta"] ?? 0
self.lowGamma = dictionary["eegLowGamma"] ?? 0
self.highGamma = dictionary["eegHighGamma"] ?? 0
}
public var dictionary: [String : Int] {
return [
"eegDelta" : self.delta,
"eegTheta" : self.theta,
"eegLowAlpha" : self.lowAlpha,
"eegHighAlpha" : self.highAlpha,
"eegLowBeta" : self.lowBeta,
"eegHighBeta" : self.highBeta,
"eegLowGamma" : self.lowGamma,
"eegHighGamma" : self.highGamma
]
}
}
如果要為EEGSnapshots下標,例如快照[“ key”],則必須添加下標支持:
extension EEGSnapshot {
public subscript(key: String) -> Int {
switch key {
case "eegDelta":
return self.delta
case "eegTheta":
return self.theta
case "eegLowAlpha":
return self.lowAlpha
case "eegHighAlpha":
return self.highAlpha
case "eegLowBeta":
return self.lowBeta
case "eegHighBeta":
return self.highBeta
case "eegLowGamma":
return self.lowGamma
case "eegHighGamma":
return self.highGamma
default:
return 0
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.