Parse platform PFUser currentUser SAVEINBACKGROUNDITHBLOCK成功完成,甚至没有尝试

Parse platform PFUser currentUser SAVEINBACKGROUNDITHBLOCK成功完成,甚至没有尝试,parse-platform,ios8,pfuser,Parse Platform,Ios8,Pfuser,我正在尝试更改已登录的用户。我像往常一样进行更改,我打电话: [[PFUser currentUser] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *PF_NULLABLE_S error){ if(succeeded){ NSLog(@"Saved user successfully."); }else{ NSLog(@"Unable to save user: %@", error)

我正在尝试更改已登录的用户。我像往常一样进行更改,我打电话:

[[PFUser currentUser] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *PF_NULLABLE_S error){
    if(succeeded){
        NSLog(@"Saved user successfully.");
    }else{
        NSLog(@"Unable to save user: %@", error);
    }
}];
它成功保存,但我的更改已消失。在保存之前,“我的用户对象”具有以下键:

.meta.acceptsAllMessages=1
。保存完成块返回时,该键即消失`(meta是我在user上的通用JSON对象,meta键中的其他值可以毫无问题地保留)。我的更改也不会反映到服务器端

第一个嫌疑犯是
beforeSave
触发器,但是我的触发器中绝对没有与
meta
键相关的内容,所以情况并非如此。为什么会发生这种情况


更新:似乎有一个更深层次的问题。我完全是在存钱,却遇到了同样的问题。我启用了飞行模式,我想保存当前用户,它立即调用了完成处理程序,successed设置为
YES
,error设置为
nil
,无需互联网连接。我已经仔细检查了我使用的是
saveinbackgroundithblock:
而不是
savefinally
。为什么会发生这种情况?

好的,我找到了解决办法。 我将一个对象添加到我的用户对象内的数组中,而没有分配属性本身。在最近的一个例子中,我做了如下事情:

[[PFUser currentUser][@"myArray"] addObject:@"something"];
[[PFUser currentUser] saveInBackground...];
因为我没有分配任何对象本身,[我的假设是]Parse认为我的用户对象不是脏的,它立即完成,甚至没有尝试保存。我已经这样解决了这个问题:

NSMutableArray *array = [PFUser currentUser][@"myArray"];
[array addObject:@"something"];
[PFUser currentUser][@"myArray"] = array;

最后一行是关键。我分配给Parse对象的“myArray”字段,这会导致Parse将我的用户标记为dirty。然后,当我保存时,因为它是脏的,它实际上会将我的用户保存到服务器上,并且可以正常工作。

在我看来可疑的部分正在设置一个标量值
1
。你的意思是
@1
还是
[NSNumber numberWithBool:YES]
?@danh我使用的是
@YES
还是
@NO
布尔值。