Как добавить значения в многонаправленный массив - PullRequest
0 голосов
/ 15 апреля 2019

Я читаю некоторые значения, сгенерированные разными маяками, скажем, маяком 1 и маяком 2. Я хочу собрать значения каждого маяка отдельно.

Я думаю, что если есть способ использовать инструкцию where, было бы проще, например, получить значения, где beacon = 1, а затем, где beacon = 2

Насколько я понимаю: во-первых,Я создал многонаправленный массив:

var values = [[Int]]()
var tempBeacon = [Int]

Затем цикл for для сбора некоторых значений для маяков i:


for i in 0...beaconCount-1 {
   let beacon = beacons[i]
   values[i] = tempBeacon.append(beacons[i].value)
}

Спасибо, ребята, и извините за мои навыки программирования, поскольку яновичок.

1 Ответ

2 голосов
/ 15 апреля 2019

Я бы склонялся к этой проблеме как к словарю массивов.Каждый ключ в словаре будет представлять маяк, а массив, хранящийся в каждом ключе, будет содержать значения для этого маяка.Использование словаря позволяет легко найти маяк, для которого вам нужно добавить новую запись.

Вот функциональный пример с игровой площадки:

func addBeaconEntry(beaconName: String, newValue: Int) {
    if beaconData[beaconName] == nil {
        // Beacon is not yet in dictionary, so we create an array
        beaconData[beaconName] = [Int]()
    }
    beaconData[beaconName]?.append(newValue)
}

// Dictionary of array of integers for beacon values
var beaconData = [String: [Int]]()
addBeaconEntry(beaconName: "beacon 1", newValue: 10)
addBeaconEntry(beaconName: "beacon 2", newValue: 20)
addBeaconEntry(beaconName: "beacon 3", newValue: 30)
addBeaconEntry(beaconName: "beacon 1", newValue: 1120)

print(beaconData)
print("Data for beacon 1:")
print(beaconData["beacon 1"] ?? [0])

...