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