Ios 类型';Int';没有下标成员

Ios 类型';Int';没有下标成员,ios,swift,Ios,Swift,我写了一个函数: func rms16(buffer: Int, bufferSize: Int) -> Float { let sum: Float = 0.0 let mySize: Int = bufferSize / sizeof(CShort) var buffer_short: Int = buffer for var i = 0; i < mySize; i++ { sum

我写了一个函数:

  func rms16(buffer: Int, bufferSize: Int) -> Float
    {
        let sum: Float = 0.0
        let mySize: Int = bufferSize / sizeof(CShort)
        var buffer_short: Int = buffer
        for var i = 0; i < mySize; i++ {
           sum += buffer_short[i] * 2
        }
        let sqrt1: Float = sqrtf(sum / Float(mySize))
        return (sqrt1) / Float(mySize)
    }
func rms16(缓冲区:Int,缓冲区大小:Int)->Float
{
设和:浮点数=0.0
让mySize:Int=bufferSize/sizeof(CShort)
var buffer_short:Int=buffer
对于变量i=0;i
上述函数在
for
循环中显示如下错误: 类型
Int
没有下标成员


有人告诉我如何修复它吗?

缓冲区\u short
是一个整数变量,而不是整数数组。 您需要将函数的第一个参数更改为整数数组,如:

func rms16(buffer: [Int], bufferSize: Int) -> Float
{
    let sum: Float   = 0.0
    let mySize: Int  = bufferSize / sizeof(CShort)
    var buffer_short = buffer

    for var i = 0; i < mySize; i++
    {
       sum += buffer_short[i] * 2
    }
    let sqrt1: Float = sqrtf(sum / Float(mySize))
    return (sqrt1) / Float(mySize)
}
func rms16(缓冲区:[Int],缓冲区大小:Int)->Float
{
设和:浮点数=0.0
让mySize:Int=bufferSize/sizeof(CShort)
var buffer_short=缓冲区
对于var i=0;i
您的注释表明第一个参数应该是指向字符缓冲区的指针。相应的Swift类型为
UnsafePointer
。还请注意,您正在乘以
2
而不是在你的Swift代码中求平方,那
和必须是
声明为变量

所以你的Swift功能是

func rms16(buffer: UnsafePointer<CChar>, bufferSize: Int) -> Float
{
    var sum: Float = 0.0
    let mySize = bufferSize / sizeof(CShort)

    // Create a pointer to a buffer of `CShort` elements from the given pointer:
    let buffer_short = UnsafeBufferPointer<CShort>(start: UnsafePointer(buffer), count: mySize)

    for var i = 0; i < mySize; i++ {
        sum += pow(Float(buffer_short[i]), 2)
    }
    let sqrt1  = sqrtf(sum / Float(mySize))
    return (sqrt1) / Float(mySize)
}

您将
buffer\u short
声明为
Int
。那不是数组。那只是一个整数。你是说
[Int]
而不是
Int
?谢谢你的回答..我的目标c代码:-(float)rms16:(有符号字符*)buffer bufferSize:(NSUInteger)bufferSize{float sum=0.0;NSUInteger mySize=bufferSize/sizeof(short);short buffer_short=(short)buffer;for(整数i=0;ilet sum = buffer_short.reduce(0.0, combine: { $0 + pow(Float($1), 2)} )