Функция, вызывающая тот же параметр, собственные параметры (массив) Swift

Мой вопрос настолько прост: я не могу вызвать функцию с тем же параметром массива, как показано ниже.

import UIKit

var myArray = [String]() // <= This line from one class

func myArrayFunc1(arg_myArray: String...) { . //This function from same class with array
    myArray = arg_myArray
}

func myArrayFunc2(arg2_myArray: String...) { //This function from another class
    myArrayFunc1(arg_myArray: arg2_myArray) // <= This line gives error
}

Моя ошибка: Невозможно преобразовать значение типа «[String]» в ожидаемый тип аргумента «String»

Пожалуйста, покажите полный код вместе с классами, которые содержат методы.

Rakesha Shastri 26.11.2018 08:05

Известная проблема: bugs.swift.org/browse/SR-128

Gereon 26.11.2018 08:07

Возможный дубликат Как пересылать функции с переменными параметрами?

Cristik 26.11.2018 08:47
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
3
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы не можете назначить arg_myArray как myArray, потому что arg_myArray - это не массив строк, а просто одна строка.

Если вам нужно назначить новый массив как myArray, замените это:

func myArrayFunc1(arg_myArray: String...) {
    myArray = arg_myArray
}

func myArrayFunc2(arg2_myArray: String...) {
    myArrayFunc1(arg_myArray: arg2_myArray)
}

с участием

func myArrayFunc1(arg_myArray: [String]) {
    myArray = arg_myArray
}

func myArrayFunc2(arg2_myArray: [String]) {
    myArrayFunc1(arg_myArray: arg2_myArray)
}

Но если вам нужно просто добавить одну строку в свой массив строк, вы можете использовать myArray.append(/* string */) для добавления нового объекта (в вашем случае строковое значение) в массив

func myArrayFunc1(arg_myArray: String) {
    myArray.append(arg_myArray)
}

func myArrayFunc2(arg2_myArray: String) {
    myArrayFunc1(arg_myArray: arg2_myArray)
}

Вы можете обновить эту строку, как показано ниже.

var myArray: [String] = [String]()

Хотя этот код может решить вопрос, хороший ответ всегда должен объяснять, в чем проблема и как этот код помогает.

BDL 26.11.2018 10:19

Другие вопросы по теме