我尝试通过执行查询,调整检索到的对象,然后保存它来更新已存在于云中的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);
}
}];
}
}
}];
}
}
答案 0 :(得分:0)
我将PFObject上的一个键设置为nil,但Parse没有抛出异常。修正:
if(card.officeCheckIns) retrievedObject[@"officeCheckIns"] = card.officeCheckIns;
if(card.shopCheckIns) retrievedObject[@"shopCheckIns"] = card.shopCheckIns;