Ios 无法调用';下标';错误

Ios 无法调用';下标';错误,ios,swift,swap,Ios,Swift,Swap,我正在尝试使用从中借用的函数。以下是该函数: func shuffleArray<T>(array: Array<T>) -> Array<T> { for var index = array.count - 1; index > 0; index-- { // Random int from 0 to index-1 var j = Int(arc4random_uniform(UInt32(ind

我正在尝试使用从中借用的函数。以下是该函数:

func shuffleArray<T>(array: Array<T>) -> Array<T>
{
    for var index = array.count - 1; index > 0; index--
    {
        // Random int from 0 to index-1
        var j = Int(arc4random_uniform(UInt32(index-1)))

        // Swap two array elements
        // Notice '&' required as swap uses 'inout' parameters
        swap(&array[index], &array[j])
    }
    return array
}
func-shufflarray(数组:数组)->array
{
对于var index=array.count-1;index>0;index--
{
//从0到索引-1的随机整数
var j=Int(arc4random_uniform(UInt32(索引-1)))
//交换两个数组元素
//请注意,交换使用“inout”参数时需要“&”
交换(&array[index],&array[j])
}
返回数组
}
但是,当我试图声明它时,交换行出现错误-无法使用类型为“(inout-inout$T6,inout-inout$T11)”的参数列表调用“subscript”


导致错误的原因是什么?

函数
shufflearlay
的第一个参数必须是
inout
参数:

func shuffleArray<T>(inout array: Array<T>)
现在,当您将数组传递给函数时,请使用
&
语法

func shuffleArray(&array)
编辑:还可以将第一个参数声明为变量并保留返回值:

func shuffleArray(var array: Array<T>) -> Array<T>
func-shufflarray(变量数组:数组)->array

太棒了。这至少解决了这个问题。现在,当我将函数调用为NSMutable数组时,我得到了一个“无法将表达式的类型‘NSMutableArray’转换为类型‘array’”错误。这是相关的还是完全不同的问题。我的直觉是后者。
func shuffleArray(var array: Array<T>) -> Array<T>