我的项目有问题。我的移动应用程序的登录表单附加到 PHP 登录服务并且表现良好。我还添加了核心数据。在核心数据表中,登录表单的用户id文本字段和密码文本字段及其在本地数据库中的数据存储,正常工作。
但是我想,当用户第一次登录时,值存储在本地数据库值存储中,当用户从这里注销时,第二次用户使用相同的登录 ID 和密码登录时,数据库无法记录两次。
显然,我希望值不能存储两次。请建议它是如何工作的。
我的代码
- (IBAction)btn_action:(id)sender {
if([[self.tx_userid text] isEqualToString:@""] || [[self.tx_password text] isEqualToString:@""] ) {
}
else {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"MYURL"]];
//create the Method "GET" or "POST"
[request setHTTPMethod:@"POST"];
//Pass The String to server(YOU SHOULD GIVE YOUR PARAMETERS INSTEAD OF MY PARAMETERS)
NSString *userUpdate =[NSString stringWithFormat:@"loginid=%@&loginpassword=%@",_tx_userid.text,_tx_password.text, nil];
//Check The Value what we passed
NSLog(@"the data Details is =%@", userUpdate);
//Convert the String to Data
NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding];
//Apply the data to the body
[request setHTTPBody:data1];
//Create the response and Error
NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
// if ([response statusCode] >= 200 && [response statusCode] < 300)
{
NSError *error = nil;
NSDictionary *jsonData = [NSJSONSerialization
JSONObjectWithData:responseData
options:NSJSONReadingMutableContainers
error:&error];
int success = [jsonData[@"success"] integerValue];
if(success == 1)
{
// stored in local DB
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Loginuser" inManagedObjectContext:context];
[newDevice setValue:self.tx_userid.text forKey:@"userid"];
[newDevice setValue:self.tx_password.text forKey:@"password"];
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
NSLog(@"Login SUCCESS");
[self performSegueWithIdentifier:@"login_success" sender:self];
} else {
NSString *error_msg = (NSString *) jsonData[@"error_message"];
[self alertStatus:error_msg :@"Sign in Failed!" :0];
}
}
}
NSLog(@"app dir: %@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
}
- (void) alertStatus:(NSString *)msg :(NSString *)title :(int) tag
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title
message:msg
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil, nil];
alertView.tag = tag;
[alertView show];
}
最佳答案
首先您检查登录 ID 是否与用户登录时存储的所有登录 ID 不同。 当它相同时,用户允许登录而不存储数据,否则先存储数据,然后允许登录。
关于ios - 如何创建登录条件和核心数据表值不能存储两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768207/