0

My question so basic.I cant call function with same array parameter as shown in the below.

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
}

My error is : Cannot convert value of type '[String]' to expected argument type 'String'

2 Answers2

0

You can't assign arg_myArray as myArray because arg_myArray isn't array of strings but just single string.

If you need to assign new array as myArray replace this:

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

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

with

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

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

But if you need to just add single string to your string array you can use myArray.append(/* string */) to append new object (in your case string value) to array

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

func myArrayFunc2(arg2_myArray: String) {
    myArrayFunc1(arg_myArray: arg2_myArray)
}
Robert Dresler
  • 10,580
  • 2
  • 22
  • 40
0

You can update this line like below.

var myArray: [String] = [String]()
Kathiresan Murugan
  • 2,783
  • 3
  • 23
  • 44
  • 2
    Although this code might solve the question, a good answer should always explain what the problem was and how this code helps. – BDL Nov 26 '18 at 09:19