Как создать массив CGFloats в объекте c?
Итак, я работаю над простой игрой в 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 в объект?
И, пожалуйста, не комментируйте тот факт, что я храню оценки в делегате приложения, я знаю, что это плохая идея, но мне не нравится настраивать синглтон сейчас, когда приложения почти завершены.
Ответы
Ответ 1
Вы можете добавлять объекты только к NSArray
, поэтому, если вы хотите добавить CGFloat
в массив, вы можете использовать NSNumber
.
Например:
NSNumber * aNumber = [NSNumber numberWithFloat:aFloat];
Затем вернемся назад:
CGFloat aFloat = [aNumber floatValue];
Ответ 2
CGFloat
т.е. примитивные массивы могут быть построены так...
CGFloat colors[] = { 1, 0, 0, 1 };
а затем "используется" способом, подобным...
CGContextSetFillColor(context, colors);
ИЛИ (более кратко, с помощью кастинга)...
CGContextSetFillColor(context, (CGFloat[]){ 1, 0, 0, 1 });
C
массивы грубые меня... но это МОЖНО сделать со стандартом ©!!