Ios 如何访问这些字典值?(Swift)
我有一个名为eegsnapshot.swift的文件,它从EEG传感器读取值并将它们存储在字典中(我想是吧?)。我在尝试访问这些值时遇到问题。我是Swift新手,在数组和字典方面做过一些工作,但这里使用的方法比我以前遇到的更复杂 谁能给我一些关于从字典中访问值的见解,例如“eegDelta” 我希望使用这些值来控制SceneKit中的动画,但需要能够首先访问它们Ios 如何访问这些字典值?(Swift),ios,swift,nsdictionary,mindwave,Ios,Swift,Nsdictionary,Mindwave,我有一个名为eegsnapshot.swift的文件,它从EEG传感器读取值并将它们存储在字典中(我想是吧?)。我在尝试访问这些值时遇到问题。我是Swift新手,在数组和字典方面做过一些工作,但这里使用的方法比我以前遇到的更复杂 谁能给我一些关于从字典中访问值的见解,例如“eegDelta” 我希望使用这些值来控制SceneKit中的动画,但需要能够首先访问它们 public struct EEGSnapshot { public let delta: Int public le
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没有下标成员”。您可以像这样进行字典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
]
}
}
如果要为快照[“key”]等Eegsnapshot下标,则必须添加下标支持:
“访问这些值时遇到麻烦”是什么意思?你到底有没有收到?你有什么错误吗?我不知道用什么代码来获取值。我尝试了
var deltaValue=EEGSnapshot[“eegDelta”]
和类似的方法,但我得到了错误“Type EEGSnapshot.Type没有下标成员”。请尝试EEGSnapshot()[“eegDelta”]
以避免此错误。但我不确定我是否明白这个问题。要从任何字典中获取值,您应该使用dictionary[“key”]
谢谢,我已经尝试过了,但是仍然得到相同的错误“EEGSnapshot没有下标成员”使用您编写的init实例化EEGSnapshot,然后使用EEGSnapshot.delta获取它。或者,如果您已经有一个EEGSnapshot,并且希望将其重新转换为字典(尽管您已经有一个用于创建EEGSnapshot的字典),那么您可以使用您创建的dictionary便利init。这真的很有帮助!
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
}
}
}