将字符串数组传递给函数

Passing String array to a function

我正在尝试将数组传递给函数:

var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)

我的函数是这样声明的:

func setLevelsArray(arr:[String])
{
    GamePrefrences.levels_array = arr

}

但是在线上我尝试调用它给出的函数但出现错误:

cannot invoke ... with argument list of type [(String)]

有什么问题?如果可以提供简要说明

首先,您的函数不是 class 级别的函数,您是直接使用 class 名称调用该方法。

这样试试。

var array:[String] = []
// fill the array
array.append(uniqueId as! String)
// pass the array to a function:
GamePrefrences.setLevelsArray(array)

函数声明。

  class func setLevelsArray(arr:[String])
    {
        GamePrefrences.levels_array = arr

    }

或者,

var array:[String] = []
// fill the array
array.append(uniqueId as String)
// pass the array to a function:
let instance = GamePrefrences()//Depends on you, how you defined the initialiser.
instance.setLevelsArray(array)

你的函数体。

func setLevelsArray(arr:[String])
{
    instance.levels_array = arr

}

请尝试这样的操作

func setLevelsArray(arr:[String])
{
let tempArr = arr
    GamePrefrences.levels_array = tempArr

}

in Swift ArraysDictionary 是按值而不是按引用传递的,因此如果您不更改值或分配给任何其他变量,则 Swift compiler没有得到副本,而是变量仍然存在于 heap 中。所以在分配之前,我认为有必要将其复制到另一个变量中。

您对空数组的声明无效。下面是声明空数组的方法:

var array = [String]()