如何在查询之外使用pfobject的值

时间:2015-12-02 04:46:04

标签: objective-c parse-platform

我是第一次开发人员,我从目标C开始解析。我理解如何将数据发布到pfclass,我理解如何在pfquery中检索数据,但我不清楚的是如何从查询中获取数据并在应用程序的其他地方使用它。

我正在使用的示例与我正在创建的调查应用程序相关。

当用户选择调查答案时

该应用会将用户选择的类别,问题和答案发布到第一个 pfclass。

NSString *quizString = [NSString stringWithFormat:@"%i",CategoryLoaded];
NSString *questionString = [NSString stringWithFormat:@"%i",QuestionSelected];
NSString *answerString = [NSString stringWithFormat:@"b"];

PFObject *newAnswerVote = [PFObject objectWithClassName:@"QuizData"];
newAnswerVote[@"quiz"] = quizString;
newAnswerVote[@"question"] = questionString;
newAnswerVote[@"answer"] = answerString;

[newAnswerVote saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded == YES){
    }
    else{
    }
}

然后我转到第二个类,查询此用户选择的确切结果,并为其添加额外的增量。通过这种方式,我可以记录所有用户选择此答案的次数。

PFQuery *query = [PFQuery queryWithClassName:@"AnswerStorage"];
[query whereKey:@"Quiz" equalTo: [NSString stringWithFormat:@"%i",CategoryLoaded]];
[query whereKey:@"Question" equalTo: [NSString stringWithFormat:@"%i",QuestionSelected]];
[query whereKey:@"Answer" equalTo: [NSString stringWithFormat:@"b"]];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *Total, NSError *error){
    [Total incrementKey:@"Total"];

    [Total saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded == YES){
        }
        else{
        }; 

这是我被困的地方。我需要的是应用程序确定此特定问题和调查中4个可能答案中每个答案的总票数。然后我希望应用程序确定哪个答案得票最多,然后根据用户是否选择了最多投票答案,得出两个不同的结果。

现在,我不是要找任何人在代码中为我拼出所有这些函数,但是如果你能帮助我理解我如何获取PFQuery的结果并将其转换为应用程序可以的整数值理解一旦查询完成,我想我可以理解其余部分。

感谢您的帮助!

修改-----------

全部解决了。谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解你,你必须做到以下几点:
Total的值增加后,您必须找到具有最高Total的答案。 你可以使用类似的东西:

PFQuery *query = [PFQuery queryWithClassName:@"AnswerStorage"];
[query whereKey:@"Quiz" equalTo: [NSString stringWithFormat:@"%i",CategoryLoaded]];
[query whereKey:@"Question" equalTo: [NSString stringWithFormat:@"%i",QuestionSelected]];
[query whereKey:@"Answer" equalTo: [NSString stringWithFormat:@"b"]];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *total, NSError *error){
    [total incrementKey:@"Total"];
    NSUInteger myVote = total[@"Total"];

    [total saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded == YES){
            PFQuery *queryForHighestVote = [PFQuery queryWithClassName:@"AnswerStorage"];
            [queryForHighestVote orderByDescending:@"Total"];
            [queryForHighestVote getFirstObjectInBackgroundWithBlock:^(PFObject *firstAnswerStorageObject, NSError *error){
                if (nil != error) {
                    // query failed
                } else {
                    NSUInteger highestVote = firstAnswerStorageObject[@"Total"];
                    if (myVote == highestVote) {
                    } else {
                    }
                }
        }
        else {
            // Increment not saved
        } 

PS:我将Total更改为total,因为变量通常以LC字符开头,而类以UC字符开头。