Вопрос

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

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

Это было полезно?

Решение

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

Напр.:

NSNumber * aNumber = [NSNumber numberWithFloat:aFloat];

Затем, чтобы вернуть его обратно:

CGFloat aFloat = [aNumber floatValue];

Другие советы

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

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

и впоследствии "используется" в моде, похожее на ...

CGContextSetFillColor(context, colors);
.

или ( более кратко, через кастинг ) ...

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

Генеракодицетагкодные массивы Gross Me Out ... Но это можно сделать с помощью «стандарта ©»!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top