iOS登录过程适用于模拟器,但不适用于iPhone(3GS)
我为我开发的iPhone应用程序创建了一个登录过程,登录过程在Xcode的iOS模拟器应用程序中工作,但不适用于我的实际电话。在登录过程中的代码是:iOS登录过程适用于模拟器,但不适用于iPhone(3GS)
- (IBAction)processLogin:(id)sender {
// hide keyboard
[_textFieldUsername resignFirstResponder];
[_textFieldPin resignFirstResponder];
// First - make activity indicator visible, then start animating, then turn of wrong user/pin label
_welcomeActivityIndicator.hidden = FALSE;
[_welcomeActivityIndicator startAnimating];
[_wrongUserPin setHidden:YES];
// check if username and pin text fields are populated
if ([_textFieldUsername.text length ] == 0 && [_textFieldPin.text length ] == 0)
{
[_welcomeActivityIndicator stopAnimating];
[_wrongUserPin setHidden:NO];
}
// CORE DATA
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:_managedObjectContext];
// set entity for request
[request setEntity:entity];
// filter results using a predicate
NSPredicate *pred =[NSPredicate predicateWithFormat:(@"username = %@"), _textFieldUsername.text];
// set predicate for the request
[request setPredicate:pred];
NSError *error = nil;
// store DB usernames in results array
NSArray *results = [_managedObjectContext executeFetchRequest:request error:&error];
NSLog(@"The returned results are %@",results);
// check text field against results stored in DB
for (Account *anAccount in results) {
if ([anAccount.username isEqualToString:_textFieldUsername.text]){
NSLog(@"Your username exists");
if ([anAccount.password isEqualToString:_textFieldPin.text]){
NSLog(@"Your pin is correct");
// TODO - put this in proper place - play audio bell if user logs in correctly
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"Glass", CFSTR("aiff"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);
// TODO - put this in proper place - Load ViewController(Root)Home
if([anAccount.username isEqualToString:@"root"])
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewControllerRootHome *roothome = (ViewControllerRootHome *)[storyboard instantiateViewControllerWithIdentifier:@"rootHome"];
[self presentModalViewController:roothome animated:YES];
}
else {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewControllerHome *home = (ViewControllerHome *)[storyboard instantiateViewControllerWithIdentifier:@"Home"];
[self presentModalViewController:home animated:YES];
}
}
else {
NSLog(@"Your pin is wrong");
[_welcomeActivityIndicator stopAnimating];
[_wrongUserPin setHidden:NO];
}
}
else {
NSLog(@"Your username was not found");
[_welcomeActivityIndicator stopAnimating];
[_wrongUserPin setHidden:NO];
}
}
}
我存储在核心数据DB的用户名,并存储在钥匙串针。我能够创建在iPhone上的帐户和信息现场表明,有在iPhone上创建的帐户,但是当我尝试登录我看到的是用户名或密码是错误的
它看起来不像你在这个代码中的任何地方存储用户名/密码到CoreData。你确定你的默认数据库中有条目吗?
I不是试图将数据存储到核心数据,而是检查用户名tf是否与存储在核心数据数据库中的用户名相匹配,以及如果引脚tf等于存储在钥匙串中的引脚,这是登录过程,而不是帐户创建过程。帐户正在创建(o.O) – Chris 2012-07-08 21:39:00
我明白,但在这一点上,你是否确保数据库实际上拥有你认为他们做的条目? – coneybeare 2012-07-08 23:52:53
那么在“关于”场景中,它表示系统上已创建账户。您可以通过https://github.com/ipatch/KegCop/zipball/master下载我正在开发的项目,并看到代码在模拟器中运行,但是当您在手机上进行测试时,请告诉我您获得的结果。 – Chris 2012-07-09 01:08:00
我尝试删除应用程序,并在手机上再次构建并运行应用程序,但仍然遇到相同的结果。 – Chris 2012-07-08 20:56:59
这是什么意思'不起作用'它做了什么? – 2012-07-08 21:23:26
@Lablabla“但是当我尝试登录所有我看到的是用户名或PIN是错误的”用户不被带到家庭场景而是欢迎场景留在屏幕上,因此用户从不登录。 – Chris 2012-07-08 21:36:19