所以我能够将数据存储到我的解析类中,但是我无法读出这些值。
这是我在 Userinfo 类和我的 User 类之间声明关系的地方:
PFObject *userObject = [PFObject objectWithClassName:@"UserInfo"];
[userObject setObject:[PFUser currentUser] forKey:@"Username"];
然后我在UserInfo类中设置值并且它正确存储,但是当我从数据库中读取值时,我没有读出任何对象。
PFQuery *load =[PFQuery queryWithClassName:@"UserInfo"];
[load whereKey:@"Username" equalTo:[PFUser currentUser]];
[load findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(!error)
{
if (!error) {
infoArray = [[NSArray alloc] initWithArray:objects];
NSLog(@"Successfully retrieved %d obj.", infoArray.count); //this comes back as zero
NSLog (@"idummy %@", infoArray);
}
}
}];
我觉得我很接近但却错过了一步,我也检查过我没有执行任何代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
除了我的解析密钥和客户端ID。
更新:
所以我已经找到了上述问题:
NSString * ObjID = curr.objectId;
PFQuery *load =[PFQuery queryWithClassName:@"UserInfo"];
[load whereKey:@"objectId" equalTo:ObjID];
当i @“adf234”为equalTo时它可以工作,但是我可以根据NSString ObjID值进行搜索吗?因为当我把ObjID放在上面时它不起作用。
答案 0 :(得分:0)
只需更改
PFQuery *load =[PFQuery queryWithClassName:@"UserInfo"];
/*[load whereKey:@"Username" equalTo:[PFUser currentUser]];*/ No need of this
[query includeKey:@"Username"];
[load findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(!error)
{
if (!error)
{
NSDictionary *dict = [objects objectAtIndex:0];
NSLog(@"Successfully retrieved %d obj.",[[dict objectForKey:@"Username"] objectForKey:@"username"]);
/* I was also getting it null but if you try to nslog [PFUSer currentUser] you will get details but I tried for object key pair then got details so similarly you will get all other details of user by providing different keys.*/
}
}
}];