热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOScoreData

staticintrow0;staticconstNSString*kStoryboardName@LRCoreDataViewController;staticconstNS
static int row=0;
static const NSString *kStoryboardName = @"LRCoreDataViewController";
static const NSString *kIdentifier = @"LRCoreDataViewController";

@interface LRCoreDataViewControllerCellInfo : NSObject
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *city;
@property (nonatomic,strong) NSString *state;
@end
@implementation LRCoreDataViewControllerCellInfo
@end
typedef LRCoreDataViewControllerCellInfo CellInfo_t;

@interface LRCoreDataViewController ()
{
    NSManagedObjectContext *_context;
}
@property (strong, nonatomic) IBOutlet UITableView *myTableView;
@property (nonatomic,strong) NSMutableArray *cellInfoArray;
@end

@implementation LRCoreDataViewController
@synthesize failedBankInfos;
@synthesize managedObjectContext;
+(instancetype)createViewController:(id)createArgs{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:(NSString *)kStoryboardName bundle:nil];
    LRCoreDataViewController *vc = [storyboard instantiateViewControllerWithIdentifier:(NSString *)kIdentifier];
    return vc;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor cyanColor];
    [self initCoreData];
    [self initRightItem];
    [self initTableView];
    [self setExtraCellLineHidden:self.myTableView];
    //[self openDataBase];
    self.myDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
- (void)openDataBase{
    NSManagedObjectModel *model=[NSManagedObjectModel mergedModelFromBundles:nil];
    NSPersistentStoreCoordinator *coodinator=[[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/mydatabase.db"];
    NSError *error=nil;
    [coodinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:path] options:nil error:&error];
    if (error) {
        NSLog(@"打开数据库失败");
    }else{
        NSLog(@"创建数据库成功");
        _cOntext=[[NSManagedObjectContext alloc]init];
        _context.persistentStoreCoordinator=coodinator;
    }
}
- (void)setExtraCellLineHidden: (UITableView *)tableView{
    UIView *view =[ [UIView alloc]init];
    view.backgroundColor = [UIColor clearColor];
    [tableView setTableFooterView:view];
    [tableView setTableHeaderView:view];
}
- (void)initTableView{
    self.myTableView.delegate=self;
    self.myTableView.dataSource=self;
}
- (void)initRightItem{
    UIButton *rightBtn = [[UIButton alloc]init];
    [rightBtn setFrame:CGRectMake(0, 0, 39, 36)];
    [rightBtn setImage:[UIImage imageNamed:@"addData"] forState:UIControlStateNormal];
    rightBtn.showsTouchWhenHighlighted = YES;
    [rightBtn addTarget:self action:@selector(addData) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *buttOnItem= [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
    self.navigationItem.rightBarButtOnItem= buttonItem;
}
#pragma mark - 向数据库中添加数据,并显示在当前界面
- (void)addData{
    LRAlertViewManager *manager=[LRAlertViewManager sharedAlertViewManager];
    manager.delegate=self;
    [manager showAlertView];
}
- (void)clickButton:(int)tag{
    if (tag==99) {
        NSError *error;
        //创建一个指向数据库的指针。管理对象,上下文。持久性存储模型对象
        NSManagedObjectContext *cOntext=[self managedObjectContext];
        NSManagedObject *BankInfo=[NSEntityDescription insertNewObjectForEntityForName:@"BankInfo" inManagedObjectContext:context];
        [BankInfo    setValue:@"姓名" forKey:@"name"];
        [BankInfo    setValue:@"城市" forKey:@"city"];
        [BankInfo    setValue:@"状态" forKey:@"sta"];
        [BankInfo    setValue:[NSNumber numberWithInt:row] forKey:@"row"];
        NSManagedObject    *bankDetails=[NSEntityDescription insertNewObjectForEntityForName:@"BankDetails" inManagedObjectContext:context];
        [bankDetails setValue:[NSDate date] forKey:@"hh"];
        [bankDetails setValue:[NSDate date] forKey:@"mm"];
        [bankDetails setValue:[NSNumber numberWithInt:12345] forKey:@"zip"];
        [bankDetails setValue:BankInfo forKey:@"info"];
        [bankDetails    setValue:bankDetails forKey:@"details"];
        if (![context save:&error]) {
            NSLog(@"Whoops, could not save:%@",[error localizedDescription]);
        }
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:context];
        [fetchRequest setEntity:entity];
        NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
        for (FailedBankInfo *info in fetchedObjects) {
            NSLog(@"row: %d", info.row);
            FailedBankDetails *details = info.details;
            NSLog(@"Zip: %@", details.zip);
        }
        NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext];
        [fetchRequest2 setEntity:entity2];
        NSError *error2;
        self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest2 error:&error2];
        [self.myTableView reloadData];
        row++;
    }else if (tag==100){
        NSManagedObjectContext *cOntext= [self managedObjectContext];
        NSEntityDescription *description = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:context];
        NSFetchRequest *request = [[NSFetchRequest alloc] init];
        [request setIncludesPropertyValues:NO];
        [request setEntity:description];
        NSError *error = nil;
        NSArray *datas = [context executeFetchRequest:request error:&error];
        if (!error && datas && [datas count]){
            for (NSManagedObject *obj in datas){
                [context deleteObject:obj];
            }
            if (![context save:&error]){
                NSLog(@"error:%@",error);
            }
        }
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext];
        [fetchRequest setEntity:entity];
        NSError *error2;
        self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest error:&error2];
        [self.myTableView reloadData];
    }
}
#pragma mark -初始化 NSArray存数据
- (void)initCoreData{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    NSError *error;
    self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
    self.title = @"CoreData";
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return failedBankInfos.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    FailedBankInfo *info = [failedBankInfos objectAtIndex:indexPath.row];
    cell.textLabel.text = info.name;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@, %@",info.city, info.state];
    UILabel *deleteLabel=[[UILabel alloc]initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width-200, 5, 200, 40)];
    deleteLabel.text=@"向左滑动删除CoreData数据";
    [cell.contentView addSubview:deleteLabel];
    return cell;
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleDelete;
}
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"删除";
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
    NSManagedObjectContext *cOntext= [self managedObjectContext];
    NSEntityDescription *description = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:context];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setIncludesPropertyValues:NO];
    [request setEntity:description];
    NSError *error = nil;
    NSArray *datas = [context executeFetchRequest:request error:&error];
    if (!error && datas && [datas count]){
        [context deleteObject:datas[indexPath.row]];
        if (![context save:&error]){
            NSLog(@"error:%@",error);
        }
    }
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    NSError *error2;
    self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest error:&error2];
    [self.myTableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    [self.myTableView reloadData];
}

iOS coreData


推荐阅读
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • JavaSE For循环入门示例
    本文将介绍Java中For循环的基本概念和使用方法,通过几个简单的示例帮助初学者更好地理解和掌握For循环。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 蒜头君的倒水问题(矩阵快速幂优化)
    蒜头君将两杯热水分别倒入两个杯子中,每杯水的初始量分别为a毫升和b毫升。为了使水冷却,蒜头君采用了一种特殊的方式,即每次将第一杯中的x%的水倒入第二杯,同时将第二杯中的y%的水倒入第一杯。这种操作会重复进行k次,最终求出两杯水中各自的水量。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • Python多线程详解与示例
    本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。 ... [详细]
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
  • 本文章提供了适用于 Cacti 的多核 CPU 监控模板,支持 2、4、8、12、16、24 和 32 核配置。请注意,0.87g 版本的 Cacti 需要手动修改哈希值为 0021 才能使用,而 0.88 及以上版本则可直接导入。 ... [详细]
  • Gty的二逼妹子序列 - 分块与莫队算法的应用
    Autumn 和 Bakser 正在研究 Gty 的妹子序列,但遇到了一个难题。他们希望计算某个区间内美丽度属于 [a, b] 的妹子的美丽度种类数。本文将详细介绍如何利用分块和莫队算法解决这一问题。 ... [详细]
  • 年前,我发表了一篇文章,分享了自己通过在线教育平台学习IT技能的经历。文中详细探讨了在线教育与传统线下教育在技能培训方面的优缺点。许多网友在讨论在线教育时,常常提到“在线教育是否缺乏学习氛围”的问题。本文将对此进行深入分析。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文介绍了如何在 Qt 应用程序中实现状态栏、浮动窗口(铆接部件)和中心部件。通过简单的代码示例,详细解释了每个组件的创建和设置方法。 ... [详细]
  • A*算法在AI路径规划中的应用
    路径规划算法用于在地图上找到从起点到终点的最佳路径,特别是在存在障碍物的情况下。A*算法是一种高效且广泛使用的路径规划算法,适用于静态和动态环境。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
author-avatar
手机用户2602918007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有