在我的应用程序中,用户可以使用UISwitch添加值。一旦用户选择了值,该值将在parse中上传到当前用户。当用户返回到用户使用UISwitch选择值的视图时,我希望UISwitch以当前用户上次选择它的方式加载。但是我就是不能让它工作。
我使用这个查询,从currentUser
获取值PFQuery *query= [PFUser query];
[query whereKey:@"username" equalTo:[[PFUser currentUser]username]];
PFObject *object = [query getFirstObject];
这就是我要输入值的地方
(void)viewDidAppear:(BOOL)animated; {
[super viewDidAppear:animated];
PFQuery *query= [PFUser query];
[query whereKey:@"username" equalTo:[[PFUser currentUser]username]];
PFObject *object = [query getFirstObject];
NSNumber *logNSNumber = [object valueForKey: @"Active"];
bool switchValue = [logNSNumber boolValue];
BOOL switchValue;
if (switchValue)
{
switchLog.on = TRUE;
legoTextView.hidden = NO;
}
else
{
switchLog.on = FALSE;
lTextView.hidden = YES;
}
}
这就是我发送布尔值的方式。
-(IBAction)changeBoolean; {
Boolean switchVaule;
if (switchLog.on)
{
switchVaule = TRUE;
logTextView.hidden = NO;
PFUser *log = [PFUser currentUser];
log[@"Active"] = @YES;
[log saveInBackground];
}
else
{
switchVaule = FALSE;
logTextView.hidden = YES;
PFUser *log = [PFUser currentUser];
log[@"Active"] = @NO;
[log saveInBackground];
}
}
有谁知道如何解决这个问题,这是正确的方法,还是我试图做这个错误的方法?谢谢!
你的代码中有很多地方是错误的。为一个;通过使用您已经拥有的用户对象([PFUser currentUser])中的数据查询当前用户的PFUser对象,您将获得当前用户的PFUser对象。当您登录时,Parse会自动给您这个对象,您不需要查询它。在其中存储一个值:
[[PFUser currentUser] setObject:[NSNumber numberWithBool:YES] forKey:@"Active"];
[[PFUser currentUser] saveInBackground];
获取值:
[[PFUser curentUser] objectForKey:@"Active"];
在您的代码中,您没有在任何地方获得要在交换机中使用的存储值。一个解决办法:
switchLog.on = [[PFUser curentUser] objectForKey:@"Active"];
正如jrturton指出的那样,您的代码中还有许多错字,并且条件处理不太理想。将其清除并尝试使用我提供的代码。