关于注册登录失败

关于注册登录失败

//
//  main.m
//  IOS学习系统
//
//  Created by phinx on 2018/4/8.
//

#import <Foundation/Foundation.h>

#import "Denglu.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Xinxi * xi =[[Xinxi alloc]init];
        [xi zhuCe]; //调用注册方法
        
        Denglu * dl = [[Denglu alloc]init];
        [dl dengLu]; //调用登录方法
        dl.user = xi;
     
    }
    return 0;
}
#import <Foundation/Foundation.h>
#import "Xinxi.h"
@interface Denglu : NSObject
@property(nonatomic,strong)NSString *loginName;
@property(nonatomic,strong)NSString *loginPassWord;
@property(nonatomic,strong)Xinxi*user;


-(void)dengLu;//登录方法
@end

#import "Denglu.h"
#define NSLog(FORMAT, ...) fprintf(stderr,"%s",[[NSString   stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String])
@implementation Denglu

-(void)dengLu{
    NSLog(@"注册成功\n");
    NSLog(@"ios学习系统登录界面\n");
    NSLog(@"是否登录\n1登录\n2不登录\n");
    int u = 0;
    scanf("%d",&u);
    
    if(u == 1){
        NSLog(@"请输入用户名:");
        char name[1000];
        scanf("%s",name);
        NSString*loginName = [NSString stringWithUTF8String:name];
        NSLog(@"请输入登录密码\n");
        char loginpassWord [1000];
        scanf("%s",loginpassWord);
        NSString*loginPassWord = [NSString stringWithUTF8String:loginpassWord];
        NSLog(@"你登录的账号名=%s密码=%s\n",name,loginpassWord);
        
        
        if([loginName isEqualToString:self.user.uesrName]&&[loginPassWord isEqualToString:self.user.passWord]){
            NSLog(@"登录成功\n");
        }else{
            NSLog(@"登录失败\n");
        }
    }
    
}
@end

#import <Foundation/Foundation.h>
//用户信息
@interface Xinxi : NSObject
@property(nonatomic,strong)NSString *uesrName;
@property(nonatomic,strong)NSString *passWord;

-(id)initWithUesrName:(NSString *)userName passWord:(NSString *)passWord;
-(void)zhuCe;  //注册用户方法
@end
#import "Denglu.h"
#import "Xinxi.h"
#define NSLog(FORMAT, ...) fprintf(stderr,"%s",[[NSString   stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String])
@implementation Xinxi
-(id)initWithUesrName:(NSString *)uesrName passWord:(NSString *)passWord{
    self = [super init];
    if(self){
        self.uesrName = uesrName;
        self.passWord = passWord;
    }
    return self;
}

-(void)zhuCe{
    NSLog(@"****ios学习系统注册界面***\n");
    NSLog(@"请输入注册用户名\n");
    char name[1000]; //缓冲区
    scanf("%s",name);//读取控制台的输入信息
    self.uesrName = [NSString stringWithUTF8String:name];//接收控制台输入的信息并储存
    NSLog(@"请输入注册用户密码\n");
    char code[1000];
    scanf("%s",code);
    self.passWord = [NSString stringWithUTF8String:code];
    NSLog(@"你注册的账号名=%s密码=%s",name,code);
}
@end

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

1、登录失败的原因是在登录方法中判断登录时的用户名和注册时的用户名是否一致时,其实获取的self.user.uesrName和self.user.passWord都是为空的。所以判断总是会走else语句,输出“登录失败”。

2、解决方法:登录注册可以在一个类中实现,直接加一个登录方法,然后判断的时候直接判断用户输入的用户名和密码,和self.uesrName、self.passWord是否一致即可。

  • 觉觉猪 提问者 #1
    dl.user = xi; 这句话的意思就是把最开始初始化的对象,赋值过去,这样一直都是一个对象,内容就不会清空了吗? ps: 这个问题我解决了 就是把dl.user = xi;的顺序写错了,写在main的调用登录方法之前就正常了
    2018-04-10 10:59:38
  • Tender10 回复 提问者 觉觉猪 #2
    嗯嗯,你这个也是一个解决方案。只要确保保存时和登录判断时的对象是同一个,就可以拿到保存的属性值。判断的时候,self.user.userName不为空,即可判断成功。
    2018-04-10 11:20:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师