有没有人知道/知道iPhone的“本地高分”功能?我知道各种全球高分框架,但我想要一些更个性化和更谦虚的东西 - 仅适用于iPhone的用户/用户。
我在想:
-(UIView*)highScoresForLevel:(unsigned)levelNumber user:(NSString*)userName: score:(unsigned)newScore;
您输入当前级别,用户名和分数。它会在NSUserDefaults
(或类似)中查找前10名,必要时会使用userName,newScore
进行更新,然后返回显示分数的UIView
。
我问,因为我认为这必须在几百万次之前完成。
答案 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];
}
然后你只需要遍历检索到的数组并根据你的要求和显示进行排序。
希望这有帮助。