Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何访问这些字典值?(Swift)_Ios_Swift_Nsdictionary_Mindwave - Fatal编程技术网

Ios 如何访问这些字典值?(Swift)

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

我有一个名为eegsnapshot.swift的文件,它从EEG传感器读取值并将它们存储在字典中(我想是吧?)。我在尝试访问这些值时遇到问题。我是Swift新手,在数组和字典方面做过一些工作,但这里使用的方法比我以前遇到的更复杂

谁能给我一些关于从字典中访问值的见解,例如“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没有下标成员”。

您可以像这样进行字典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
        }
    }
}