Как мне сделать массив CGFloats в цели c? - PullRequest
17 голосов
/ 08 июля 2010

Итак, я работаю над простой игрой для 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;
    }

Проблема в том, что рекордами является NSMutableArray, который может хранить только объекты. Итак, вот мой вопрос, как лучше всего хранить CGFloats в массиве? Это другой тип массива, который поддерживает CGFloats? Это простой способ превратить CGFloat в объект?

И, пожалуйста, не комментируйте тот факт, что я храню результаты в делегате приложения, я знаю, что это плохая идея, но я не в настроении делать синглтон сейчас, когда приложения почти готовы .

Ответы [ 2 ]

30 голосов
/ 08 июля 2010

Вы можете добавлять объекты только в NSArray, поэтому, если вы хотите добавить CGFloat s в массив, вы можете использовать NSNumber.

Например:

NSNumber * aNumber = [NSNumber numberWithFloat:aFloat];

Тогда, чтобы вернуть его:

CGFloat aFloat = [aNumber floatValue];
13 голосов
/ 28 ноября 2012

CGFloat т.е. примитивные массивы могут быть построены так ...

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

и впоследствии «используется» таким же образом, как ...

CGContextSetFillColor(context, colors);

ИЛИ ( более кратко, через приведение ) ...

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

C массивы брутто меня ... но это МОЖЕТ быть сделано "стандартным ©"!

...