在PFObject上调用“save”后解析OS X SDK跳过代码

时间:2014-12-17 20:56:40

标签: objective-c macos parse-platform

我尝试通过执行查询,调整检索到的对象,然后保存它来更新已存在于云中的PFObject。我最初尝试使用saveInBackgroundWithBlock方法,但块永远不会被调用。之后我移动了save方法,并且保存调用之后的任何代码都没有被执行。

我使用最新的Parse OS X SDK运行Yosemite。

-(void)saveCardToCloud:(Card *)card{
if(card.cardID){
    PFQuery *cardQuery = [PFQuery queryWithClassName:@"Card"];
    [cardQuery whereKey:@"cardID" equalTo:card.cardID];
    [cardQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            if ([objects count] > 0) {
                PFObject *retrievedObject = [objects firstObject];
                retrievedObject[@"lastSeenAt"] = card.lastSeenAt;
                if(!retrievedObject[@"firstSeenAt"]){
                    retrievedObject[@"firstSeenAt"] = card.firstSeenAt;
                }
                retrievedObject[@"officeCheckIns"] = card.officeCheckIns;
                retrievedObject[@"shopCheckIns"] = card.shopCheckIns;
                [retrievedObject save];
                NSLog(@"SAVED IT");
                [retrievedObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
                    if(!error){
                        NSLog(@"Updated existing card");
                    }else{
                        NSLog(@"Failed to update existing card: %@", error);
                    }
                }];
            }
        }
    }];
}

}

Parse Issue GIF

1 个答案:

答案 0 :(得分:0)

我将PFObject上的一个键设置为nil,但Parse没有抛出异常。修正:

if(card.officeCheckIns) retrievedObject[@"officeCheckIns"] = card.officeCheckIns;
if(card.shopCheckIns) retrievedObject[@"shopCheckIns"] = card.shopCheckIns;