Код местных рекордов для iPhone - PullRequest
0 голосов
/ 28 апреля 2011

Кто-нибудь знает / знает о функции "местных рекордов" для iPhone? Я знаю о различных глобальных фреймворках с высокими показателями, но хочу что-то более личное и скромное - только для пользователей / пользователей iPhone.

Я думаю что-то вроде: -(UIView*)highScoresForLevel:(unsigned)levelNumber user:(NSString*)userName: score:(unsigned)newScore;

Вы вводите текущий уровень, имя пользователя и оценку. Он просматривает топ-10 в NSUserDefaults (или аналогичном), обновляет, если необходимо, userName,newScore, затем возвращает UIView, отображающий результаты.

Я спрашиваю, потому что я полагаю, что это должно было быть сделано пару миллионов раз.

Мне известны подобные (но менее конкретные) SO вопросы, такие как: 1 , 2 - которые не были полезны.

1 Ответ

2 голосов
/ 28 апреля 2011

Создайте свой пользовательский класс со следующим классом для кодирования.

@interface HighScoreClass : NSObject 
{
    NSString * userName;
    NSInteger score;
}
@property (nonatomic,retain) NSString * userName;
@property (nonatomic,assign) NSInteger score;
@end


@implementation HighScoreClass
@synthesize userName;
@synthesize score;

//To encode custom object
- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeObject:userName forKey:@"userName"];
    [coder encodeInteger:score forKey:@"score"];
}

//to decode your custom object
- (id) initWithCoder: (NSCoder *)coder
{
    if (self = [super init])
    {
        self.userName = [coder decodeObjectForKey:@"userName"];
        self.score = [coder decodeIntegerForKey:@"score"];
    }
    return self;
}

-(void)dealloc
{
    [super dealloc];
    [userName release];
}
@end

//To store in NSUserDefaults an array "objectArray" of HighScoreClass objects
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:objectArray] forKey:[NSString stringWithFormat@"highScoresForLevel%i",level];


//To retrieve from NSUserDefaults
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *highScoreArraySavedArray = [currentDefaults objectForKey:[NSString stringWithFormat@"highScoresForLevel%i",level]];
if (highScoreArraySavedArray != nil)
{
    NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:highScoreArraySavedArray];
    if (oldSavedArray != nil)
        objectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
    else
        objectArray = [[NSMutableArray alloc] init];
}

Тогда вам просто нужно просмотреть полученный массив и отсортировать его в соответствии с вашими требованиями и отображением.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...