Obj-C - 如何将id转换为GLfloat []

时间:2015-01-28 19:10:39

标签: ios objective-c arrays nsmutablearray

我有NSMutableArrayGLfloat的简单数组。 这就是我在Swift中构建它的方式:

var arrays = NSMutableArray()
for(i=0; i<arraysCount; i++) {
    var array:[GLfloat] = []

    // fill the array

    arrays.appand(array)
}

但是如何通过Objective-C中的索引获取我的数组? [arrays objectAtIndex:index]给了我一个ID,但是如何将它转换为GLfloat数组?

我需要使用GLfloat数组,因为必须绘制这些数组,然后将它们发送到glBufferData()

1 个答案:

答案 0 :(得分:2)

在objective-c中,您无法向NSMutableArray添加简单的C类型NSMutableArray只能包含objective-c对象。因此,当您致电[arrays objectAtIndex:index];时,您获得的数组很可能是NSNumberNSValue的数组。

在目标c中,您可以使用C样式数组,例如int myArr[5] = {1,2,3,4,5};NSArray但您不能混用它们。因此,NSArray int NSArray *myArr = @[@1,@2,@3,@4,@5]@1,其中NSNumberintValuefloat为1。

因此,要将数组转换为float otherArr[(int)myArr.count]; for (int i = 0; i < myArr.count; i++) { NSNumber *num = myArr[i]; otherArr[i] = myArr.floatValue; } // Voilia a C style array of floats 数组,您可以执行以下操作:

{{1}}

当你达到目标-c时,这就是Swift可以混淆的地方,因为我相信这一切都是隐含的。