Получение "постороннего символа аргумента" при попытке добавить массив в другой массив в Swift

Я получаю ошибку extraneous argument label 'contentsOf:' in call array.append(contentsOf: test) при попытке запустить этот код на игровой площадке:

import Cocoa

var array:[Any] = []
let test = [""]
array.append(contentsOf: [""])
array.append(contentsOf: test)

Почему это происходит? Как я понимаю, существует два равных массива с пустой строкой.

Ответ 1

Чтобы ответить на ваш конкретный вопрос в комментариях, в этом случае вам просто нужно бросить так, чтобы Свифт знал, что вам известно. В этом случае, так как SKShapeNode опускает до SKNode просто отлично, вы можете просто нарисовать с помощью as. Если вы делали бросок, который может потерпеть неудачу, вам нужно будет использовать as? и безопасно разворачивать, чтобы быть уверенным.

var allNodes: [SKNode] = []
let onlyShapeNodes: [SKShapeNode] = []

allNodes.append(contentsOf: onlyShapeNodes as [SKNode])

Для исходного общего примера это также будет работать.

var array: [Any] = []
let test = ["", ""]

array.append(contentsOf: [""] as [Any])
array.append(contentsOf: test as [Any])