我正在使用Parse.com在我的应用中存储数据。 我在Parse上有一个名为TestScore的课程。其中包含测试,分数和用户名字段。 现在我想获得前5名得分手并将其保存到NSUserDefaults中。 这是我的代码
PFQuery *query = [PFQuery queryWithClassName:@"TestScore"];
[query whereKey:@"test" equalTo:test];
[query orderByDescending:@"score"];
query.limit = 5;
NSMutableArray *top5Array = [[NSMutableArray alloc] init];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (!error)
{
NSMutableArray *score = [[NSMutableArray alloc] init];
NSMutableArray *userName = [[NSMutableArray alloc] init];
for (PFObject *object in objects)
{
[score addObject:[object valueForKey:@"score"]];
[userName addObject:[object valueForKey:@"userName"]];
}
[top5Array addObject:score];
[top5Array addObject:userName];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:top5Array forKey:@"Top5"];
[userDefaults synchronize];
}
else
{
NSLog(@"Error while getting top 5 Scorers.");
}}];
但是,不幸的是它不起作用。我通过它调试,实际上控制不会进入查询块。 请有人帮帮忙!
答案 0 :(得分:0)
尝试将top5Array
声明为块变量:
__block NSMutableArray *top5Array = [[NSMutableArray alloc] init];
答案 1 :(得分:0)
"实际上您可以将自定义对象保存到NSUserDefaults,但必须先使用NSKeyedArchiver将其转换为NSData。为此,您的自定义对象必须实现NSCoding协议。看看我创建的这个库,它为Parse对象添加了NSCoding支持:
https://github.com/martinrybak/Parse-NSCoding
Martin Rybak "
请参阅以下链接中的上述解决方案的原件
https://www.parse.com/questions/how-to-save-parse-returned-data-into-nsuserdefaults