如何使用pos for ios更新User类中的字段?

时间:2014-10-24 07:36:36

标签: ios parse-platform

我正在使用解析后端来开发一个应用程序。在应用程序中,我有一个注册模块。用户输入他的电子邮件和密码,我发送数据进行解析并暂时将用户名设置为temp。在下一个屏幕上,提示用户选择用户名,我将相应地更新后端的用户名。现在问题在于:字段用户名的值不会更新。这些是我在查找互联网后尝试的几种方式。

//sharedclass is a singleton class, i save object id of the registered user to its attribute objectid.
NSString * objectID = sharedClass.sharedInstance->objectid;
NSLog(@"%@", objectID);
PFObject *pointer = [PFObject objectWithoutDataWithClassName:@"User" objectId:objectID];
sharedClass.sharedInstance->user.username = self.userName.text;
[pointer setObject:self.userName.text forKey:@"username"];
[pointer saveInBackground];

这个说没有找到任何对象。即使我得到objectID也好。 那么这里有一个:

PFQuery *query = [PFQuery queryWithClassName:@"Users"];
[query whereKey:@"objectId" equalTo:objectID];//objectId is default parse field and objectID is the string i created
[query getFirstObjectInBackgroundWithBlock:^(PFObject * users, NSError *error) {
    if (!error) {

        [users setObject:self.userName.text forKey:@"username"];


        [users saveInBackground];
        NSLog(@"Done");
    } else {
        // Did not find any UserStats for the current user
        NSLog(@"Error: %@", error);
    }
}];

这个说没有结果与查询匹配。

然后我有了这个:

PFQuery *query = [PFQuery queryWithClassName:@"Users"];

[query getObjectInBackgroundWithId:objectID block:^(PFObject *username, NSError *error) {
    username[@"username"] = self.userName.text;
    [username saveInBackground];
}];

它有同样的错误,查询没有匹配的结果。如何正确查询?有人可以解释为什么这些查询不起作用吗? 这是我在用户注册成功时检索对象ID的方法

//objectid is a native string and objectId is the parse default field
sharedClass.sharedInstance->objectid = sharedClass.sharedInstance->user.objectId;

这是解析数据的截图,以了解结构。

enter image description here

1 个答案:

答案 0 :(得分:2)

根据Parse documentation for PFUserthis question on the Parse Q&A sitePFUserPFObject的一种特殊类型。

您需要调用[PFQuery queryWithClassName:]来检索可以搜索[PFUser query]数据库中对象的PFQuery对象,而不是使用Users,例如:

PFQuery *query = [PFUser query];
[query whereKey:@"objectId" equalTo:objectID];
[query getFirstObjectInBackgroundWithBlock:....