Вам нужно отправить цель, как это
func tapRecognizerforLabel (named label: UILabel, action: Selector,target:Any) {
let tapGestureForLabel = UITapGestureRecognizer(target:target, action: action)
label.addGestureRecognizer(tapGestureForLabel)
label.isUserInteractionEnabled = true
}
Цель должна содержать реализацию метода внутри селектора, поскольку вы устанавливаете self
, который является Toolbox
, и он не следовательно, произойдет сбой, чтобы вызвать
Toolbox.tapRecognizerforLabel(named: nameLabel, action: #selector(self.methodAlpha),target:self)
Переместите записи [] из двойных кавычек, то есть используйте «записи»: []
Вы пытаетесь вставить строку вместо массива
Отформатируйте ваш массив в соответствии с @Bibberty Comment и выполните операцию
raffles=rafale=[{"author":"Name","rafflename":"RAFFLE","amount":10,"entries":[]}]
raffles[0].entries.push({ 'username': 'example', 'user_id': 1 });
console.log(raffles)
Сначала вы должны разыграть записи в массиве.
const raffles = [{"author":"Name","rafflename":"RAFFLE","amount":"10","entries":"[]"}]
// cast entries to Array
raffles[0].entries = JSON.parse(raffles[0].entries)
// now you can push them
raffles[0].entries.push('test')
console.log(raffles)
Это не работает, потому что у вас есть "" вокруг свойств внутри вашего объекта. Вы можете исправить это, удалив символ "" или сделав это:
raffles[0]['entries'].push(//your code here);
Когда свойства объекта являются строками (т.е. когда они заключены в кавычки) вы должны получить доступ к этому свойству, используя «точечную нотацию»
например:
var object = {"property":"five"};
console.log(object["property"]); //prints 'five'
console.log(object.property); //throws an error