二维码的生成Demo

在AppDelete里
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [UMessage startWithAppkey:@"XXXXX" launchOptions:launchOptions];
    
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
        //register remoteNotification types (iOS 8.0及其以上版本)
        UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
        action1.identifier = @"action1_identifier";
        action1.title=@"Accept";
        action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
        
        UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按钮
        action2.identifier = @"action2_identifier";
        action2.title=@"Reject";
        action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
        action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
        action2.destructive = YES;
        
        UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
        categorys.identifier = @"category1";//这组动作的唯一标示
        [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
        
        UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert
                                                                                     categories:[NSSet setWithObject:categorys]];
        [UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];
#else
    
    //register remoteNotification types (iOS 8.0以下)
    [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge
     |UIRemoteNotificationTypeSound
     |UIRemoteNotificationTypeAlert];
    
#endif
    //for log
    [UMessage setLogEnabled:YES];
    
    
    return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    [UMessage registerDeviceToken:deviceToken];
    NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
                  stringByReplacingOccurrencesOfString: @">" withString: @""]
                 stringByReplacingOccurrencesOfString: @" " withString: @""]);
}


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UMessage didReceiveRemoteNotification:userInfo];
}

在ViewController里

#import "ViewController.h"
#import "QRCodeGenerator.h"
#import "DataApi.h"
#import "TableViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *context;
@property (weak, nonatomic) IBOutlet UIImageView *review;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
//点击生成按钮 并且将数据存入沙盒和数据库中
- (IBAction)clickSC:(id)sender {
    
    //生成二维码图片
    UIImage *image = [QRCodeGenerator qrImageForString:_context.text imageSize:_review.frame.size.width];
    _review.image = image;
    
    //
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 1)lastObject]stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",_context.text]];
    NSLog(@"%@",path);
    
    //写入文件
    [UIImagePNGRepresentation(image) writeToFile:path atomically:1];
    
    [[DataApi sharedDataApi]insertDataToSzzwithName:_context.text];
    
    
    
}
//点击跳转页面
- (IBAction)clickAdd:(id)sender {
    
    TableViewController *t = [[TableViewController alloc]init];
    [self.navigationController pushViewController:t animated:1];
}

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

@end
新建一个tableViewController
#import "TableViewController.h"
#import "DataApi.h"

@interface TableViewController ()
{
    NSArray *arrData;
}

@end

@implementation TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    arrData = [[DataApi sharedDataApi]getAllData];
    
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
    
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
-(void)viewWillAppear:(BOOL)animated
{
    arrData = [[DataApi sharedDataApi]getAllData];
    [self.tableView reloadData];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
#warning Incomplete method implementation.
    // Return the number of rows in the section.
    return arrData.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *celled = @"celled";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:celled];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:celled];
    }
    
    NSDictionary *dic = arrData[indexPath.row];
    
    cell.textLabel.text = dic[@"name"];
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 1)lastObject]stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",dic[@"name"]]];
    UIImage *ima = [UIImage imageWithContentsOfFile:path];
    cell.imageView.image = ima;
    

    
    return cell;
}
@end

这是一个DataApi业务类
#import <Foundation/Foundation.h>
#import "FMDB.h"

@interface DataApi : NSObject
@property (strong, nonatomic) FMDatabase *dataBase;///<数据库对象

/**
 *	@brief	生成单例
 *
 *	@return	单例对象
 */
+(instancetype)sharedDataApi;

/**
 *	@brief	向数据库中插入数据
 *
 *	@param 	name 	插入的数据
 *
 *	@return	是否成功插入
 */
-(BOOL)insertDataToSzzwithName:(NSString *)name;

/**
 *	@brief	获取数据表中的全部数据
 *
 *	@return	全部数据
 */
-(NSArray *)getAllData;

@end

在DataApi.m里写上单例方法
#import "DataApi.h"

@implementation DataApi

/**
 *	@brief	生成单例
 *
 *	@return	单例对象
 */
+(instancetype)sharedDataApi
{
    static DataApi *da;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        da = [[DataApi alloc]init];
        da.dataBase = [da dataBase];
    });
    return da;
}
//数据库的get方法
-(FMDatabase *)dataBase
{
    if (!_dataBase) {
        _dataBase = [[FMDatabase alloc]initWithPath:[self documentPath]];
        [_dataBase open];
        if ([self creataTable]) {
            NSLog(@"创建数据库成功");
        }
    }
    return _dataBase;
}
/**
 *	@brief	向数据库中插入数据
 *
 *	@param 	name 	插入的数据
 *
 *	@return	是否成功插入
 */
-(BOOL)insertDataToSzzwithName:(NSString *)name
{
    if (![_dataBase open]) {
        [_dataBase open];
    }

    NSString *sql = @"insert into szz (name) values (:name)";
    NSDictionary *dic = @{@"name":name};
    return [_dataBase executeUpdate:sql withParameterDictionary:dic];
}
/**
 *	@brief	获取数据表中的全部数据
 *
 *	@return	全部数据
 */
-(NSArray *)getAllData
{
    if (![_dataBase open]) {
        [_dataBase open];
    }
    NSMutableArray *arr = [NSMutableArray new];
    NSString *sql = @"select * from szz";
    FMResultSet *result = [_dataBase executeQuery:sql];
    while ([result next]) {
        NSDictionary *dic = [NSDictionary dictionaryWithDictionary:[result resultDictionary]];
        [arr addObject:dic];
    }
    return  arr;
}

//创建数据表
-(BOOL)creataTable
{
    NSString *sql = @"create table if not exists szz(id integer primary key autoincrement, name text)";
    return [_dataBase executeUpdate:sql];
}
//获取document路径
-(NSString *)documentPath
{
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 1)[0];
    return [path stringByAppendingPathComponent:@"szz.sqlite"];
}


@end
#import "DataApi.h"

@implementation DataApi

/**
 *	@brief	生成单例
 *
 *	@return	单例对象
 */
+(instancetype)sharedDataApi
{
    static DataApi *da;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        da = [[DataApi alloc]init];
        da.dataBase = [da dataBase];
    });
    return da;
}
//数据库的get方法
-(FMDatabase *)dataBase
{
    if (!_dataBase) {
        _dataBase = [[FMDatabase alloc]initWithPath:[self documentPath]];
        [_dataBase open];
        if ([self creataTable]) {
            NSLog(@"创建数据库成功");
        }
    }
    return _dataBase;
}
/**
 *	@brief	向数据库中插入数据
 *
 *	@param 	name 	插入的数据
 *
 *	@return	是否成功插入
 */
-(BOOL)insertDataToSzzwithName:(NSString *)name
{
    if (![_dataBase open]) {
        [_dataBase open];
    }

    NSString *sql = @"insert into szz (name) values (:name)";
    NSDictionary *dic = @{@"name":name};
    return [_dataBase executeUpdate:sql withParameterDictionary:dic];
}
/**
 *	@brief	获取数据表中的全部数据
 *
 *	@return	全部数据
 */
-(NSArray *)getAllData
{
    if (![_dataBase open]) {
        [_dataBase open];
    }
    NSMutableArray *arr = [NSMutableArray new];
    NSString *sql = @"select * from szz";
    FMResultSet *result = [_dataBase executeQuery:sql];
    while ([result next]) {
        NSDictionary *dic = [NSDictionary dictionaryWithDictionary:[result resultDictionary]];
        [arr addObject:dic];
    }
    return  arr;
}

//创建数据表
-(BOOL)creataTable
{
    NSString *sql = @"create table if not exists szz(id integer primary key autoincrement, name text)";
    return [_dataBase executeUpdate:sql];
}
//获取document路径
-(NSString *)documentPath
{
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, 1)[0];
    return [path stringByAppendingPathComponent:@"szz.sqlite"];
}


@end


你可能感兴趣的:(二维码生成)