computed Setter für einen Index eines Arrays in Swift [duplicate]

Diese Frage hat hier bereits eine Antwort:

Shorthand Setter-Deklaration für einen Index eines Arrays in Swift 2 Antworten

Um es kurz zu machen, was ich erreichen möchte, ist zum Beispiel:

var actions: [String]{
    get{
        if (_actions==nil){
            _actions = []
        }
        return _actions!
    }
    set{
        _actions = newValue
    }
    subscript(index:Int) -> String{
      set {
         assert(index<_actions.count && index>=0, "Index out of range")
         _actions[index] = newValue
      }
    }
}

Ich weiß, dass der Index kein Zugriffsmechanismus für das Array ist, aber was ist dann die bequemste Alternative, um genau das zu tun?

Ich freue mich auf prägnante Antworten, wenn möglich! Vielen Dank

Bearbeiten

Um meine Erklärung für @ jrturton zu erweitern,

Was ich versuche zu erreichen, ist, wann immer Actions [i] auf einen neuen Wert gesetzt wird, möchte ich einige zusätzliche Berechnungen durchführen, wie zum Beispiel die Neupositionierung der entsprechenden Untersicht von Actions [i].

Aber wenn ich @ saactions[3] = "randomMethod", der berechnete Setter für das gesamte Array wird aufgerufen. Richtig? Also ich würde gerne einen Weg finden, damit beiactions[3] ist auf einen neuen Wert gesetzt, eine FunktionrepositionView(3) kann zum Beispiel aufgerufen werden.

Ich kenne andere Möglichkeiten, aber in meiner Frage wird einfach gefragt, ob es eine bequemere Möglichkeit gibt, wie im obigen Beispiel: ein berechneter Setter, um das zu tun, was ich will?

Edit 2:

Um @Vatsal Manot zu zeigen, was ich wirklich meine, habe ich Getter für Index entfernt. Hier ist ein vollständiges Beispiel. Swift (das aufgrund eines Fehlers nicht ausgeführt wird):

import UIKit
import Foundation

class DWActionsSubmenu: UIView{
    var actions: [DWAction]{
        get{
            if (_actions==nil){
                _actions = []
            }
            return _actions!
        }
        set{
            _actions = newValue
        }
        subscript(index:Int) -> DWAction{
            set {
                assert(index<_actions.count && index>=0, "Index out of range")
                _actions[index] = newValue
                a()
            }
        }
    }

    var _actions: [DWAction]?

    init(actions:[DWAction]?){
        super.init()
        _actions = actions
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder:aDecoder)
    }

    func a(){

    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage