数据持久化存储回顾
2016-03-21 20:45
363 查看
不是每个程序员都是天才
集合写入文件
NSDictionary *dic1=@{@"aaa":@"aaa",@"cccc":@"vvvv"};
NSDictionary *dic2=@{@"ddd":@"ddd"};
NSArray *arr=@[dic1,dic2];
NSString *path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"arr.plist"];
NSLog(@"%@",path);
NSLog(@"增加 : %d",[arr writeToFile:path atomically:YES]);
集合读取
NSString *path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"data.plist"];
NSData *newData=[NSData dataWithContentsOfFile:path];
NSLog(@"%@",newData);
NSString *newStr= [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStr);
熟练就能很快的敲出来,就是要从低级一步步的来
tableView增删改
@interface RootTableViewController ()<PostValueDelegate>
{
//记录选中行的索引值
NSIndexPath *CurrentIndexPath;
}
@end
@implementation RootTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"106.jpg"]];
//导航栏右按钮
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem)];
self.Students=[NSMutableArray arrayWithCapacity:3];
[self.Students addObject:@"zs"];
[self.Students addObject:@"ls"];
[self.Students addObject:@"ww"];
//单元格复用 唯一标识
[self.tableView registerClass:[UITableViewCell class]forCellReuseIdentifier:@"reuseIdentifier"];
}
-(void)addItem
{
UIAlertController *alertC=[UIAlertController alertControllerWithTitle:@"增加学生信息" message:@"输入姓名" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *alertA1=[UIAlertAction actionWithTitle:@"添加" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
UITextField *textName=alertC.textFields[0];
//将输入框里的值赋给UITableView里面
[self.Students addObject:textName.text];
[self.tableView reloadData];//刷新
NSLog(@"真正的操作对象");
}];
//在提示框添加输入框
[alertC addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
textField.placeholder=@"输入姓名";
}];
[alertC addAction:alertA1];
[self presentViewController:alertC animated:YES completion:^{
}];
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
//刷新数据
[self.tableView reloadData];
}
//5.实现协议方法
-(void)PostValue:(NSString *)UserName
{
//为集合指定索引位置元素赋值
self.Students[CurrentIndexPath.row]=UserName;
//刷新
[self.tableView reloadData];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source 多少个分区
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
#pragma mark 每个分区返回多少
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.Students.count;
}
#pragma
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
cell.textLabel.text=self.Students[indexPath.row];
return cell;
}
#pragma 把信息推到下一页
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
ViewController *vc=[[ViewController alloc] init];
vc.Name=self.Students[indexPath.row];
//指定代理
vc.delegate=self;
[self.navigationController pushViewController:vc animated:YES];
}
//修改
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
//删除某行
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Delete the row from the data source
[self.Students removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert)
{
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
//移动moveRow
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
//找到指定位置元素
NSString *name=self.Students[fromIndexPath.row];
//删除找到的元素
[self.Students removeObject:name];
//插入删除集合元素到指定位置
[self.Students insertObject:name atIndex:toIndexPath.row];
NSLog(@"%@",self.Students);
}
//让没格可以移动
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
集合写入文件
NSDictionary *dic1=@{@"aaa":@"aaa",@"cccc":@"vvvv"};
NSDictionary *dic2=@{@"ddd":@"ddd"};
NSArray *arr=@[dic1,dic2];
NSString *path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"arr.plist"];
NSLog(@"%@",path);
NSLog(@"增加 : %d",[arr writeToFile:path atomically:YES]);
集合读取
NSString *path=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"data.plist"];
NSData *newData=[NSData dataWithContentsOfFile:path];
NSLog(@"%@",newData);
NSString *newStr= [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStr);
熟练就能很快的敲出来,就是要从低级一步步的来
tableView增删改
@interface RootTableViewController ()<PostValueDelegate>
{
//记录选中行的索引值
NSIndexPath *CurrentIndexPath;
}
@end
@implementation RootTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"106.jpg"]];
//导航栏右按钮
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addItem)];
self.Students=[NSMutableArray arrayWithCapacity:3];
[self.Students addObject:@"zs"];
[self.Students addObject:@"ls"];
[self.Students addObject:@"ww"];
//单元格复用 唯一标识
[self.tableView registerClass:[UITableViewCell class]forCellReuseIdentifier:@"reuseIdentifier"];
}
-(void)addItem
{
UIAlertController *alertC=[UIAlertController alertControllerWithTitle:@"增加学生信息" message:@"输入姓名" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *alertA1=[UIAlertAction actionWithTitle:@"添加" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
UITextField *textName=alertC.textFields[0];
//将输入框里的值赋给UITableView里面
[self.Students addObject:textName.text];
[self.tableView reloadData];//刷新
NSLog(@"真正的操作对象");
}];
//在提示框添加输入框
[alertC addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
textField.placeholder=@"输入姓名";
}];
[alertC addAction:alertA1];
[self presentViewController:alertC animated:YES completion:^{
}];
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
//刷新数据
[self.tableView reloadData];
}
//5.实现协议方法
-(void)PostValue:(NSString *)UserName
{
//为集合指定索引位置元素赋值
self.Students[CurrentIndexPath.row]=UserName;
//刷新
[self.tableView reloadData];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source 多少个分区
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
#pragma mark 每个分区返回多少
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.Students.count;
}
#pragma
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
cell.textLabel.text=self.Students[indexPath.row];
return cell;
}
#pragma 把信息推到下一页
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
ViewController *vc=[[ViewController alloc] init];
vc.Name=self.Students[indexPath.row];
//指定代理
vc.delegate=self;
[self.navigationController pushViewController:vc animated:YES];
}
//修改
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
//删除某行
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Delete the row from the data source
[self.Students removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert)
{
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
//移动moveRow
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
//找到指定位置元素
NSString *name=self.Students[fromIndexPath.row];
//删除找到的元素
[self.Students removeObject:name];
//插入删除集合元素到指定位置
[self.Students insertObject:name atIndex:toIndexPath.row];
NSLog(@"%@",self.Students);
}
//让没格可以移动
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
相关文章推荐
- ios三方插件
- QT学习之路————重写键盘事件
- Ubuntu14.04LTS下应用Caffe训练Cifar10错误案例分析与解决方案1
- something about Parameter Estimation (参数估计)
- Android Studio 快捷键
- 如何查看本地Git的html帮助文档
- socket编程(二)---- 简单的服务器端
- 优先队列
- 软件看门狗程序
- WebService 安卓客户端调用和服务器端搭建
- CROC 2016 - Elimination Round (Rated Unofficial Edition) E. Intellectual Inquiry 贪心 构造 dp
- 基于DDS的任意波形发生器
- Java+MySQL实现网络爬虫程序
- MySQL 入门 之 联接关键字
- 智能指针的理解
- CALayer Animation实践(一):让应用灵动起来!
- 初学统计学(一)
- ios管理插件
- thinkphp学习记事
- 页面两个submit通过onclick修改action本地没问题,服务器无效的奇葩问题