如何在目标c中创建一系列CGFloats?

mem*_*n32 17 arrays iphone objective-c cgfloat

所以我正在开发一款简单的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;
    }
Run Code Online (Sandbox Code Playgroud)

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

并且请不要评论我在应用代表中存储分数这一事实,我知道这是一个坏主意,但我现在没心情必须制作一个单独的应用程序差不多完成了.

Tom*_*ing 30

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

例如:

NSNumber * aNumber = [NSNumber numberWithFloat:aFloat];
Run Code Online (Sandbox Code Playgroud)

然后把它拿回来:

CGFloat aFloat = [aNumber floatValue];
Run Code Online (Sandbox Code Playgroud)

  • 使用Xcode 4.5,可以将其压缩为"@(floatVariable)"以获取您的NSNumber.例如,'NSNumber*aNumber = @(4.65);' (6认同)

Ale*_*ray 13

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

CGFloat colors[] = { 1, 0, 0, 1 };
Run Code Online (Sandbox Code Playgroud)

然后以类似于...的方式"使用"

CGContextSetFillColor(context, colors);
Run Code Online (Sandbox Code Playgroud)

或者(更简洁地说,通过铸造)......

CGContextSetFillColor(context, (CGFloat[]){ 1, 0, 0, 1 });
Run Code Online (Sandbox Code Playgroud)

C阵列总值我出去......不过这可以通过"标准©"来完成!

  • 现在很容易.另一个答案不是"错误的",更多的是它是另一种方法(如果你在整个地方使用对象,特别方便).您的方法将更有效,但可能不会像整个应用程序一样灵活. (3认同)