iOS coreData
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 ()<LRAlertViewManagerDelegate,UITableViewDataSource,UITableViewDelegate>
{
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的更多相关文章
- iOS CoreData技术学习资源汇总
一.CoreData学习指引 1. 苹果官方:Core Data Programming Guide 什么是CoreData? 创建托管对象模型 初始化Core Data堆栈 提取对象 创建和修改自定 ...
- IOS CoreData 多表查询demo解析
在IOS CoreData中,多表查询上相对来说,没有SQL直观,但CoreData的功能还是可以完成相关操作的. 下面使用CoreData进行关系数据库的表与表之间的关系演示.生成CoreData和 ...
- iOS CoreData (一) 增删改查
代码地址如下:http://www.demodashi.com/demo/11041.html Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系映 ...
- iOS CoreData (二) 版本升级和数据库迁移
前言:最近ChinaDaily项目需要迭代一个新版本,在这个版本中CoreData数据库模型上有新增表.实体字段的增加,那么在用户覆盖安装程序时就必须要进行CoreData数据库的版本升级和旧数据迁移 ...
- IOS CoreData 多表查询(下)
http://blog.csdn.net/fengsh998/article/details/8123392 在iOS CoreData中,多表查询上相对来说,没有SQL直观,但COREDATA的功能 ...
- iOS CoreData 介绍和使用(以及一些注意事项)
iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...
- iOS CoreData介绍和使用(以及一些注意事项)
iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...
- iOS - CoreData 数据库存储
1.CoreData 数据库 CoreData 是 iOS SDK 里的一个很强大的框架,允许程序员以面向对象的方式储存和管理数据.使用 CoreData 框架,程序员可以很轻松有效地通过面向对象的接 ...
- iOS coreData问题
iOS常见错误-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter 这是因为在工程中CoreData的 ...
- ios Coredata 的 rollback undo 等事物处理函数
首先说明 ios 中 NSManagedObjectContext 默认的 undoManager是nil的,就是说 undo 和 redo 都是没用的. 但是 rollback函数和reset函数是 ...
随机推荐
- [WPF]Binding的Converter和Validator
不拘一格用数据的Converter 上篇文已经说明,Binding就是数据源与目标之间的“关联”.大多数情况下,数据从Source到Target以及从Target返回Source都是“直来直去”的,但 ...
- NYOJ 45 棋盘覆盖 模拟+高精度
题意就不说了,中文题... 小白上讲了棋盘覆盖,于是我就挖了这题来做. 棋盘覆盖的推导不是很难理解,就是分治的思想,具体可以去谷歌下. 公式就是f(k) = f(k - 1) * 4 + 1,再化解下 ...
- Hbase0.96源码之HMaster(二)Hmaster主要循环becomeActiveMaster
1,Hmaster主循环主要这里主要有: 1,1 becomeActiveMaster(startupStatus); 1.2 finishInitialization 1.3 loop() beco ...
- log(n)在第一时间,以确定该阵列i小号码
简介参考算法9.2 int partition(int *a,int p,int r){ int x=a[r]; int i=p-1; for(int j=p;j<=r-1;j++){ if(a ...
- doc-remote-debugging.html
https://studio.zerobrane.com/doc-remote-debugging.html
- HTML学习_01
html总结 html是一门标记语言,也就是不经过编译就能直接执行的语言,不像是c/c++/java等等须要转换成二进制码, html是一门最主要的学科,提供了一个框架,提供了各种标签和规则,使得语言 ...
- 玩转html5(三)---智能表单(form),使排版更加方便
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文实现了一个后台由Spring+Mybatis+SpringMVC组成,分页采用Pag ...
- MSSQL连接字符串,你真的清楚吗?
原文:MSSQL连接字符串,你真的清楚吗? 几年前当我第一次面试时,考官发现我是个新手于是他让我写个连接字符串,虽然当时就知道X种连接字符串的写法,但是当时却没能写对一个,工作多年后我仍然不能写一个正 ...
- Java NIO 系列教程(转)
原文中说了最重要的3个概念,Channel 通道Buffer 缓冲区Selector 选择器其中Channel对应以前的流,Buffer不是什么新东西,Selector是因为nio可以使用异步的非堵塞 ...