setter computado para um subscrito de uma matriz em Swift [duplicado]
Esta pergunta já tem uma resposta aqui:
Declaração abreviada de setter para um subscrito de uma matriz no Swift 2 respostasPara ser breve, o que eu quero alcançar é, por exemplo:
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
}
}
}
Eu sei que subscrito não é um acessador para matriz, mas qual é a alternativa mais conveniente para fazer exatamente isso?
Eu realmente aprecio respostas sucintas, se possível! Muito obrigado!
Editar:
Para estender minha explicação para @jrturton,
O que estou tentando obter é que sempre que as ações [i] estiverem definidas como um novoValor, eu gostaria de fazer alguns cálculos extras, como reposicionar a subvisão respectiva das ações [i].
Mas se eu disseractions[3] = "randomMethod"
, o setter computado para toda a matriz será chamado. Direito? Então, eu gostaria de encontrar uma maneira de que, quandoactions[3]
está definido como newValue, uma funçãorepositionView(3)
pode ser chamado, por exemplo.
Conheço outras maneiras de fazê-lo, mas minha pergunta simplesmente pergunta se existe uma maneira mais conveniente, como no exemplo acima: um levantador computado, para fazer o que eu quero?
Edição 2:
Para mostrar ao @Vatsal Manot o que realmente quero dizer, removi o getter para subscrito, e aqui está um exemplo completo.swift (que não será executado devido a erro):
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(){
}
}