文档章节

qq登陆

小黑202
 小黑202
发布于 2015/06/15 18:56
字数 997
阅读 40
收藏 0

一.ViewController.h中代码

//
//  ViewController.h
//  QQRegLogin
//
//  Created by jabez.huang on 15/6/15.
//  Copyright (c) 2015年 jabez.huang. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *QQNumber;

@property (weak, nonatomic) IBOutlet UITextField *QQPassword;

@property (weak, nonatomic) IBOutlet UILabel *ResultMessage;

- (IBAction)Login:(id)sender;


@end

二.ViewController.m中代码

//
//  ViewController.m
//  QQRegLogin
//
//  Created by jabez.huang on 15/6/15.
//  Copyright (c) 2015年 jabez.huang. All rights reserved.
//

#import "ViewController.h"
#define PATH @"/Users/feifanchengxuyuan/Desktop/QQNumberFile.plist"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //设置QQ密码文本框为密码框
    _QQPassword.secureTextEntry = YES;
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)Login:(id)sender {
    //注意:当文件里多次使用对象方法时,建议使用间接。
    NSString *qqNumber = _QQNumber.text;
    NSString *qqPassword = _QQPassword.text;
    
    //判断QQ号码最小的位数为5位 , QQ密码最小的位数为6位
    if( ([qqNumber length] > 4 ) && ([qqPassword length] > 5)){
        //创建一个NSFileManager对象
        NSFileManager *fileManager = [NSFileManager defaultManager];
        //创建一个文件流对象
        NSData *data = [fileManager contentsAtPath: PATH];
        //创建一个解档 并连接文件流
        NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData: data];

        //通过相关的key解档相关的QQ字典
        NSDictionary *dict = [unArchiver decodeObjectForKey: @"QQ"];
        
        //如果登录输入的qqNumber在字典里找到了qqPassword也就是说,qqNumber 和 qqPassword输入正确,也就是登录成功
        if ( [dict[qqNumber] isEqualToString: qqPassword] ){
             _ResultMessage.text = @"登录成功!";
        }else{
             _ResultMessage.text = @"QQ号码或QQ密码错误!";
        }
    }else{
        _ResultMessage.text = @"QQ号码或QQ密码错误!";
    }
    
}
@end

三.RegViewController.h

//
//  RegViewController.h
//  QQRegLogin
//
//  Created by jabez.huang on 15/6/15.
//  Copyright (c) 2015年 jabez.huang. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface RegViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *QQRegNumber;

@property (weak, nonatomic) IBOutlet UITextField *QQRegPassword;

@property (weak, nonatomic) IBOutlet UITextField *QQSureRegPassword;

@property (weak, nonatomic) IBOutlet UILabel *ResultMessage;


- (IBAction)QQRegButton:(id)sender;

@end

四.RegViewController.m

//
//  RegViewController.m
//  QQRegLogin
//
//  Created by jabez.huang on 15/6/15.
//  Copyright (c) 2015年 jabez.huang. All rights reserved.
//

#import "RegViewController.h"

#define PATH @"/Users/feifanchengxuyuan/Desktop/QQNumberFile.plist"

@interface RegViewController ()

@end

@implementation RegViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //设置QQ号码文本框不可用,因为是自动生成的
    _QQRegNumber.enabled = NO;
    //设置QQ密码文本框为密码框
    _QQRegPassword.secureTextEntry = YES;
    //设置QQ确认密码文本框为密码框
    _QQSureRegPassword.secureTextEntry = YES;
    
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

- (IBAction)QQRegButton:(id)sender {
    //QQ密码和QQ确认密码不能小于6位
    if( [_QQRegPassword.text length] < 6 || [_QQSureRegPassword.text length] < 6){
        _ResultMessage.text = @"密码或确认密码小于6位";
    }else if( ![_QQRegPassword.text isEqualToString: _QQSureRegPassword.text ]){ //两次输入密码不相等
        _ResultMessage.text = @"两次输入密码不相等!";
    }else{
        //根据当前时间戳得到相关的QQ号
        //注意:当申请人多的时候,建议使用毫秒来标识QQ号码唯一性
        NSDate *date = [NSDate date];
        NSInteger QQNumber = (long)[date timeIntervalSince1970];
        
        //把当前生成的QQ号码写入QQ号码控件里
        _QQRegNumber.text = [NSString stringWithFormat: @"%li", QQNumber];
        
        //提取相关的已有的账号信息,防止新数据覆盖老数据,把新数据和老数据合并组合加入字典里
        
        //创建一个NSFileManager对象
        NSFileManager *fileManager = [NSFileManager defaultManager];
        //创建一个NSData文件流对象
        NSData *data = [fileManager contentsAtPath: PATH];
        //创建一个解档对象
        NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData: data];
        //定义一个可变的字典,给予一个初始的空间
        NSMutableDictionary *mudict = [NSMutableDictionary dictionaryWithCapacity:10];
        //把原始老的相关账号数据放入字典临时存储
        [mudict addEntriesFromDictionary: [unArchiver decodeObjectForKey: @"QQ"]]; //可变字典加入老数据
        
        
        //以下为新数据,注意:写文件的时候的字典数据为新数据+老数据
        NSMutableData *mudata = [[NSMutableData alloc]init];
        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData: mudata];
       
        //归档写入文件之前,先把新数据也加入可变字典,这样字典里目前就有了新数据 + 老数据
        [mudict addEntriesFromDictionary:@{_QQRegNumber.text:_QQRegPassword.text} ];
        //把组合好的(新数据+老数据) 归档
        [archiver encodeObject: mudict forKey:@"QQ"];
        //注意:必须写finishEncoding,否则可能为空
        [archiver finishEncoding];
        //归档以后写入文件
        [mudata writeToFile:PATH atomically:YES];
        //显示提示信息
         _ResultMessage.text = @"注册成功!";
//        NSLog( @"%@", [unArchiver decodeObjectForKey: @"QQ"] );
        
    }
}
@end

五.跳转下一页面
添加页面View Controller,然后用Button按钮选择show,同样返回也用Button按钮选择show

六.跳转页面设置

选择右侧Custon Class中Class中的ViewController

或者新建一个,iOS->Source->Cocoa Touch Class选择UIViewController

© 著作权归作者所有

共有 人打赏支持
小黑202
粉丝 7
博文 139
码字总数 37779
作品 0
西安
程序员
QQ账号登陆的Ruby实现

腾讯公司开放了QQ登陆,这对广大站长是个好消息,从此实现QQ账号登陆您的网站不再是梦想。但是遍寻腾讯的SDK文档,并不见Ruby的实现,这对Ruby爱好者可不是个好消息。经过好几天的摸索,我终...

鉴客
2011/09/06
1K
3
Juniper netscreen防火墙禁止QQ和MSN

Juniper netscreen防火墙禁止QQ和MSN 目前很多公司都不允许用qq和msn,如果有一台AOS设备那就简单多了,直接把qq和msn的程序禁用就行了,但是aos设备价格都比较昂贵,小公司用的话相当于用大...

msft
2016/08/28
0
0
python 使用qq登陆搜狗微信搜索

本博文只提供登陆的过程,不提供具体的代码,如果需要源码的请联系qq 516750653. 首先你应该对常见的加密算法比较了解,知道即可,还有你需要了解如果使用firebug进行js调试,需要比较熟练,其次你...

tuerqidi
2015/10/02
603
2
答tingting19820610问

由于导致QQ不能正常登陆的可能有很多,具体不清楚你的机器是什么状况,在没有得到详细的描述之前,的确难以给出确定的结论,我列出了以下一些可能,请参照一一排查,或请教当地有关技术支持。...

晨曦之光
2012/03/09
0
0
PHP实现QQ登陆

分享一段利用PHP实现QQ登陆的代码,原理是用curl模拟发送post登录,cookie保存本地,实现真正的3GQQ登陆。这里代码理论可以支持永久单挂QQ—真正做到免费挂qq哦。 <?php function qqlogin()...

梦梦阁
2016/01/14
62
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部