FMDB简单使用方法

在工程中导入MJExtension FMDB
在pods中导入
target ‘FMDB+MB’ do
pod ‘AFNetworking’
pod ‘MBProgressHUD’
@end

先写Datamanager
在.h里

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Datamanager : NSObject
+(Datamanager *)datamodel;


//增
-(void)zengModel:(id)zeng;

//删
-(void)shanModel:(int)shan;

//查
-(id)chaModel;
@end

NS_ASSUME_NONNULL_END

在.m里

#import "Datamanager.h"
#import "FMDB.h"
#import "MJEModel.h"
static Datamanager *_defaulthandle =nil;
@interface Datamanager ()

@property(nonatomic,strong)FMDatabase*fMDB;
@end


@implementation Datamanager

//创建单例类
+(Datamanager *)datamodel{
    
    if (!_defaulthandle)
    {
        _defaulthandle=[[Datamanager alloc]init];
        
    }
    return _defaulthandle;
    
}
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    if (!_defaulthandle) {
        _defaulthandle=[super allocWithZone:zone];
    }
  return _defaulthandle;
}
//创建地址
-(FMDatabase *)fMDB{
    if (_fMDB == nil)
   {
        NSString *path =[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"moview.sqlite"];
        NSLog(@"path==%@",path);
        _fMDB =[FMDatabase databaseWithPath:path];
        [self initTable];
    }

    return _fMDB;

}

-(void)initTable{
    [self.fMDB open];
    [self.fMDB executeUpdate:@"CREATE TABLE movie (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,category TEXT, url,TEXT)"];
    [self.fMDB close];
    
    
}
//增
-(void)zengModel:(MJEModel *)zeng{
    [self.fMDB open];
    [self.fMDB executeUpdateWithFormat:@"insert into movie (title,category,url) values (%@,%@,%@)",zeng.title,zeng.category,zeng.url];
    NSLog(@"收藏成功");
    [self.fMDB close];
    
}

//删
-(void)shanModel:(int)shan{
    [self.fMDB open];
    [self.fMDB executeUpdateWithFormat:@"DELETE FROM movie WHERE id = %d",shan];
    
    [self.fMDB close];
    
}

//查
-(id)chaModel{
    [self.fMDB open];
    NSMutableArray *arr=[[NSMutableArray alloc]init];
    FMResultSet *result=[self.fMDB executeQuery:@"SELECT * FROM movie"];
    while ([result next])
    {
        MJEModel *small=[[MJEModel alloc]init];
        
        [arr addObject:small];
        small.ID=[result intForColumnIndex:0];
        small.title=[result stringForColumnIndex:1];
        small.category=[result stringForColumnIndex:2];
        small.url=[result stringForColumnIndex:3];
    }
    
    [self.fMDB close];
    return [arr copy];
    
}
@end

*在创建的model.h里


@interface MJEModel : NSObject
@property(nonatomic , assign)int ID;

@property(nonatomic , strong)NSString *title;
//@property(nonatomic , strong)NSString *date;
@property(nonatomic , strong)NSString *category;
@property(nonatomic , strong)NSString *url;

@end

*在创建的model.m里

#import "MJEModel.h"
@implementation MJEModel
+ (NSDictionary *)modelContainerPropertyGenericClass {
    return @{
             @"data":[MJEModel class]
             };
}

在ViewController.m里


#import "ViewController.h"
#import "twoViewController.h"
#import "AFNetworking.h"
#import "MJExtension.h"
#import "AFHTTPSessionManager.h"
#import "MJEModel.h"
#import "youViewController.h"
#import "MBProgressHUD.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>


@property(nonatomic,strong) UITableView *tbv;

@property(nonatomic,strong)NSMutableArray *dataArray;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title=@"啦啦啦啦啦啦";
    self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"收藏" style:UIBarButtonItemStylePlain target:self action:@selector(right)];
    [self loadData];
   [self.view addSubview:self.tbv];
    
   
}
-(void)showMBHudWithMessage:(NSString *)msg
{
    MBProgressHUD *hud=[[MBProgressHUD alloc]initWithView:self.view];
    //设置文本的提示样式
    hud.mode=MBProgressHUDModeIndeterminate;
    //自动从父视图中移除
    hud.removeFromSuperViewOnHide=YES;
    hud.label.text=msg;
    [self.view addSubview:hud];
    [hud showAnimated:YES];
    [hud hideAnimated:YES afterDelay:3.0];

}
-(void)loadData
{
    //显示一个等待控制器
    MBProgressHUD *hud=[[MBProgressHUD alloc]initWithView:self.view];
    hud.removeFromSuperViewOnHide=YES;
    [self.view addSubview:hud];
    [hud showAnimated:YES];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@"http://v.juhe.cn/toutiao/index?key=67968aeebf1f4e3b6170f7217b6f3cdb&type=top" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
        [hud hideAnimated:YES];
        NSLog(@"JSON: %@", responseObject);
        self.dataArray = [MJEModel mj_objectArrayWithKeyValuesArray:responseObject[@"result"][@"data"]];
        [self showMBHudWithMessage:@"加载成功"];
        //刷新表格
        [self.tbv reloadData];
    } failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

    
}
-(UITableView *)tbv{
    if (!_tbv)
    {
       _tbv=[[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
            _tbv.delegate=self;
            _tbv.dataSource=self;
        }
    return _tbv;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
        if (!cell) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
    }
    _tbv.rowHeight=100;
    MJEModel *mod=self.dataArray[indexPath.row];
    cell.textLabel.text=mod.title;
    cell.detailTextLabel.text=mod.category;
   return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    twoViewController *two=[twoViewController new];
    MJEModel *model=self.dataArray[indexPath.row];
    two.StrUrl=model;
    [self.navigationController pushViewController:two animated:YES];
    }
-(void)right{
    youViewController *right=[youViewController new];
    [self.navigationController pushViewController:right animated:YES]; 
}
@end

在twoViewController.h

  #import "MJEModel.h"
NS_ASSUME_NONNULL_BEGIN

@interface twoViewController : UIViewController
@property(nonatomic,strong)MJEModel *StrUrl;
@end

跳转后详情界面
在twoViewController.m

#import "twoViewController.h"
#import "Datamanager.h"
@interface twoViewController ()

@end
@implementation twoViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor whiteColor];
    
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"收藏" style:UIBarButtonItemStyleDone target:self action:@selector(right)];
    
    // web 详情y界面
    UIWebView *web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    NSURL *url=[NSURL URLWithString:self.StrUrl.url];
    NSURLRequest *requst=[NSURLRequest requestWithURL:url];
    [web loadRequest:requst];
    [self.view addSubview:web];
    
}
//点击收藏按钮
-(void)right{
    [[Datamanager datamodel]zengModel:self.StrUrl];
}
@end

主界面收藏按钮跳转按钮界面
在youViewController.m里


#import "youViewController.h"
#import "youxiangqingViewController.h"
#import "MJEModel.h"
#import "Datamanager.h"
#import "twoViewController.h"
@interface youViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)UITableView *table;
@property(nonatomic,strong)NSMutableArray *datasource;

@end

@implementation youViewController
//查询
- (void)viewDidAppear:(BOOL)animated{
    self.datasource=[[Datamanager datamodel] chaModel];
    
    [self.table reloadData];
}
- (void)viewDidLoad {
    [super viewDidLoad];
   
    self.view.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:self.table];
    
}
-(UITableView *)table{
    if (!_table)
    {
        _table=[[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
        _table.delegate=self;
        _table.dataSource=self;  
    }
    return _table;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return _datasource.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
    
    if (!cell) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
    }
    _table.rowHeight=100;
    MJEModel *mode=self.datasource[indexPath.row];
    cell.textLabel.text=mode.title;
    cell.detailTextLabel.text=mode.category;
    return cell;
    
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   
    youxiangqingViewController *xiangqing=[[youxiangqingViewController alloc]init];
    MJEModel *model=self.datasource[indexPath.row];
    xiangqing.StrUrl=model;
    [self.navigationController pushViewController:xiangqing animated:YES];
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
        
         MJEModel *model=self.datasource[indexPath.row];
    [[Datamanager datamodel]shanModel:model.ID];
    self.datasource=[[Datamanager datamodel]chaModel];
    [self.table reloadData];
}
@end

收藏界面点击单元格的详情界面
在youxiangqingViewController.h

#import "MJEModel.h"
NS_ASSUME_NONNULL_BEGIN

@interface youxiangqingViewController : UIViewController
@property(nonatomic,strong)MJEModel *StrUrl;
@end

在youxiangqingViewController.m里
#import "youxiangqingViewController.h"
#import "Datamanager.h"
@interface youxiangqingViewController ()

@end

@implementation youxiangqingViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor whiteColor];
    
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"收藏" style:UIBarButtonItemStyleDone target:self action:@selector(right)];
    
    // web 详情y界面
    UIWebView *web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    NSURL *url=[NSURL URLWithString:self.StrUrl.url];
    NSURLRequest *requst=[NSURLRequest requestWithURL:url];
    [web loadRequest:requst];
    [self.view addSubview:web];
    
}

-(void)right{
    [[Datamanager datamodel]zengModel:self.StrUrl];
    
    
}
@end

记住开网 就ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值