Как мне создать массив CGFloats в objective c?
-
13-09-2020 - |
Вопрос
Итак, я работаю над простой игрой для 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
, так что, если вы хотите, вы можете добавить CGFloat
s к массиву, вы можете использовать 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 ... Но это можно сделать с помощью «стандарта ©»!