Мой вопрос настолько прост: я не могу вызвать функцию с тем же параметром массива, как показано ниже.
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»
Известная проблема: bugs.swift.org/browse/SR-128
Возможный дубликат Как пересылать функции с переменными параметрами?



Вы не можете назначить 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]()
Хотя этот код может решить вопрос, хороший ответ всегда должен объяснять, в чем проблема и как этот код помогает.
Пожалуйста, покажите полный код вместе с классами, которые содержат методы.