17

所以我正在开发一个简单的 iPhone 游戏,并试图制作一个本地高分表。我想制作一个数组并将最高分推入其中。以下是我到目前为止的代码:

    CGFloat score;
    score=delegate.score;
    NSInteger currentindex=0;
    for (CGFloat *oldscore in highscores)
    {
        if (score>oldscore)
        {
            [highscores insertObject:score atIndex:currentindex]
            if ([highscores count]>10)
            {
                [highscores removeLastObject];  

            }

        }
        currentindex+=1;
    }

问题是 highscores 是一个 NSMutableArray,它只能存储对象。所以这是我的问题,将 CGFloats 存储在数组中的最佳方法是什么?它们是支持 CGFloats 的不同类型的数组吗?他们是将 CGFloat 变成对象的简单方法吗?

请不要评论我将分数存储在应用程序委托中的事实,我知道这是一个坏主意,但现在应用程序几乎完成了,我没有心情制作一个单例。

4

2 回答 2

30

您只能将对象添加到 中NSArray,因此如果您想将CGFloats 添加到数组中,可以使用NSNumber.

例如:

NSNumber * aNumber = [NSNumber numberWithFloat:aFloat];

然后将其取回:

CGFloat aFloat = [aNumber floatValue];
于 2010-07-08T15:06:23.920 回答
13

CGFloat 即原始数组可以像这样构造......

CGFloat colors[] = { 1, 0, 0, 1 };

随后以类似于...的方式“使用”

CGContextSetFillColor(context, colors);

或者更简洁地说,通过强制转换)......

CGContextSetFillColor(context, (CGFloat[]){ 1, 0, 0, 1 });

C数组让我毛骨悚然......但这可以用“标准©”来完成!

于 2012-11-27T23:06:57.153 回答