iPhone的本地高分代码

时间:2011-04-28 03:33:11

标签: iphone user-interface uitableview uiview

有没有人知道/知道iPhone的“本地高分”功能?我知道各种全球高分框架,但我想要一些更个性化和更谦虚的东西 - 仅适用于iPhone的用户/用户。

我在想: -(UIView*)highScoresForLevel:(unsigned)levelNumber user:(NSString*)userName: score:(unsigned)newScore;

您输入当前级别,用户名和分数。它会在NSUserDefaults(或类似)中查找前10名,必要时会使用userName,newScore进行更新,然后返回显示分数的UIView

我问,因为我认为这必须在几百万次之前完成。

我知道类似(但不太具体)的SO问题,例如:12 - 这些问题没用。

1 个答案:

答案 0 :(得分:2)

使用以下类进行编码创建自定义类。

@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];
}

然后你只需要遍历检索到的数组并根据你的要求和显示进行排序。

希望这有帮助。