0

I have a number of arrays (let's call them array A, B, C, and D).

I want to be able to toggle what's included in a master array with UISwitches for each array.

To avoid repeating all the arrays for all the combinations (A, AB, AC, AD, ABC, ABD, ACD, ABCD, B, BC, etc...), is there a way to programmatically do this?

To be clear, "A", "B", "C", and "D" are four different arrays, not contents in a single array.

Thank you - any help is much appreciated.

Sebastian Hubard
  • 163
  • 1
  • 4
  • 18

1 Answers1

0

How about something like this as a starting point?

import Foundation

struct ArrayManager {

    var A: [Int] = []
    var B: [Int] = []
    var C: [Int] = []
    var D: [Int] = []

    var includeA = false
    var includeB = false
    var includeC = false
    var includeD = false

    var masterArray: [Int] {
        get {
            var result: [Int] = []

            if includeA { result.append(contentsOf: A) }
            if includeB { result.append(contentsOf: B) }
            if includeC { result.append(contentsOf: C) }
            if includeD { result.append(contentsOf: D) }

            return result
        }
    }
}

var manager = ArrayManager()

manager.A = [1, 2]
manager.B = [3, 4]
manager.C = [5, 6]
manager.D = [7, 8]

manager.includeA = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeB = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeC = true

print("manager.masterArray: \(manager.masterArray)")

manager.includeD = true

print("manager.masterArray: \(manager.masterArray)")

Output:

manager.masterArray: [1, 2]
manager.masterArray: [1, 2, 3, 4]
manager.masterArray: [1, 2, 3, 4, 5, 6]
manager.masterArray: [1, 2, 3, 4, 5, 6, 7, 8]
lentil
  • 664
  • 5
  • 5
  • 1
    Some naming advice, struct and class names should start with an uppercase letter, variable names should start with a lowercase letter and finally use meaningful variable names and avoid single letter ones. – Joakim Danielson Mar 28 '20 at 15:53
  • Def agree! Trying to keep it as basic and close to the question as possible in this case, esp since we don't know what the array types are or what they represent. – lentil Mar 28 '20 at 15:57
  • Oh right yeah I guess I should have used the real names - in reality I just used A, B, C, & D as placeholders since it looked simpler for this question. Thanks for the advice though – Sebastian Hubard Mar 30 '20 at 02:17