Objective c 每次导航都会执行查询
我在主菜单的ViewDidDisplay中有以下解析查询,它查询管理员是否通过解析登录。问题是,每次用户导航到菜单时都会执行查询,因为它是主屏幕;这是经常发生的事。这是一个查询,我是否将它放在一个if语句中,该语句基本上表示一旦登录,就停止查询,或者应该将它放在另一个方法中:Objective c 每次导航都会执行查询,objective-c,parse-platform,Objective C,Parse Platform,我在主菜单的ViewDidDisplay中有以下解析查询,它查询管理员是否通过解析登录。问题是,每次用户导航到菜单时都会执行查询,因为它是主屏幕;这是经常发生的事。这是一个查询,我是否将它放在一个if语句中,该语句基本上表示一旦登录,就停止查询,或者应该将它放在另一个方法中: - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; PFACL *roleACL = [PFACL ACL]; [roleACL
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
PFACL *roleACL = [PFACL ACL];
[roleACL setPublicReadAccess:YES];
PFRole *role = [PFRole roleWithName:@"Administrator" acl:roleACL];
[role saveInBackground];
if (![PFUser currentUser]) {
// Create the log in view controller
CustomLoginViewController *logInViewController = [[CustomLoginViewController alloc] init];
[logInViewController setDelegate:self]; // Set ourselves as the delegate.
// Create the sign up view controller
CustomSignupViewController *signUpViewController = [[CustomSignupViewController alloc] init];
[signUpViewController setDelegate:self]; // Set ourselves as the delegate
// Assign our sign up controller to be displayed from the login controller
[logInViewController setSignUpController:signUpViewController];
// Present the log in view controller
[self presentViewController:logInViewController animated:YES completion:NULL];
} else {
PFQuery *queryRole = [PFRole query];
[queryRole whereKey:@"name" equalTo:@"Administrator"];
[queryRole getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
PFRole *role = (PFRole *)object;
PFRelation *adminRelation = [role users];
PFQuery *queryAdmins = [adminRelation query];
[queryAdmins whereKey:@"objectId" equalTo:[PFUser currentUser].objectId];
[queryAdmins getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!error && [object.objectId isEqualToString:[PFUser currentUser].objectId]) {
SelectUserViewController * GPVC = [[SelectUserViewController alloc] initWithNibName:@"SelectUserViewController" bundle:nil];
[self presentViewController:GPVC animated:YES completion:nil];
}
}];
}];
}
}
在shouldBeginSignUp部分,我还有另外一个问题。这真的很困扰我,我的导师不会提交我的应用程序。就目前的查询而言。基本上只是感谢CrimsonChris,将下面的代码放在viewDidLoad中意味着查询只会在用户第一次进入主菜单时执行,而不是每次。解决方案。谢谢Chris,您可能需要考虑将此代码放入一个单独的模型对象中,以处理您的web服务,特别是如果其他视图控制器将进行web调用。。。将那些非UI功能的相关部分组合在一个合适的模型中会更干净(并且符合MVC的精神) 您应该参考UIViewController文档以找到更合适的方法。这是ViewDidDisplay:的预期行为。您可以将此代码放在viewDidLoad方法中,但更好的位置是完全在此视图控制器之外。你在视图控制器中放的代码越少越好。你刚刚修复了它,克里斯,你终于做到了!哈哈