11月2日-4日学习CoreData和storyboard小结
来源:互联网 发布:阿里云 专用网络 ftp 编辑:程序博客网 时间:2024/05/22 06:20
11月2-3日 CoreData 在Iphone上的使用学习
新建一个CoreData项目, 会在程序开始时初始化CoreData栈对象:被管理的上下文对象MOC,协调者MOD.程序目录, POS呢?
建模.模型只有三个属性,真是体贴啊.关闭了Optional选项,还有正则表达式对属性的约束(这是需要深入的话题) 不过到注册账号关联的话,要用到关系了.所以设了账号Account和联系人Person,是一对多的关系
关于模型一对多关系的实现,在引用的情况下实现点选 to-many relationship,在类别会生成一些方法,也就是这个类要生成维护多个对象的方法了.
NSFetchedResultsController Class
FRC使用NSFetchRequest和被管理的对象上下文来取得数据.NSFetchRequest包含一个排序描述符或者一个断言.断言可以决定获取的对象的个数.对本项目来讲NSFecthRequest的按name来排序是有用的.
FRC使用委托机制来使表格视图和数据改变进行同步.
新建一个CoreData class是这么建的,orm会自动将其持久化.
detailItem =[NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:managedObjectContext];
managedObjectContext每个vc都要有,所以
//使用AppDelegate
AppDelegate * appDelegate = [[UIApplicationsharedApplication] delegate];
self.managedObjectContext=appDelegate.managedObjectContext;
cathe问题.注意模型改动后用命名不同的缓存就好.
storyboard的学习
故事板是主要是为了把控制器之间的切换也能可视化编辑而存在的. scene和segue,分别代表原来的控制器和切换控制.
添加segue请看tools guide的adding a segue to a Storyboard;
果然,故事版真是个神奇的东西,得按照它的规则来.使用规则:
为了让IB初始化vc,请不要自己去初始化,除了一开始的rootViewContriller,
有触发源的- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 很多时候是无法直接设置触发源的.以标识强制执行的performSegueWithIdentifier:sender:
[controller performSegueWithIdentifier:@"EditDetail"sender:nil];这个可以让我提前把AddController放到栈顶. 这个东西让我好找.主要是不太熟悉故事版,它不可以用nib初始化controller,用故事板时nib消失了!!!
11月3日通讯录账号及其功能的实现
功能一:storybroad登陆界面中的scene和segue实现
segue类型push和modal的区别:push是导航器的入栈出栈操作,
[super.navigationControllersetNavigationBarHidden:YESanimated:TRUE];这个在ViewDidLoad和WillDisappear中起到隐藏导航栏的作用.
功能二:在CoreData中利用关系抽出关联登陆账号的列表,保存联系人时存进账号的一对多关系数组中
detailItem =[NSEntityDescriptioninsertNewObjectForEntityForName:@"Person"inManagedObjectContext:managedObjectContext];
NSError *error = nil;
if (![context save:&error]) {
// Replace this implementation with code to handle theerror appropriately.
// abort() causes the application to generate a crash logand terminate. You should not use this function in a shipping application,although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [erroruserInfo]);
abort();
}
抓取数据: NSFetchRequest
普通抓取
AppDelegate * appDelegate =[[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context =appDelegate.managedObjectContext ; NSFetchRequest*fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Account" inManagedObjectContext:context]; [fetchRequest setEntity:entity]; NSError *error = nil; acountData= [context executeFetchRequest:fetchRequest error:&error]; if (acountData == nil) { // Handle the error }
account = "0x6d468b0 <x-coredata://689B1AE9-785D-4CBB-881E-F343C929EA11/Account/p4>";
断言抓取以及排序..参考了API的代码.
所有切换用故事板
功能三:登陆账号的保存密码功能.用NSUserDefaults来做
NSString *text1 = [[NSUserDefaults standardUserDefaults] stringForKey:@"userName"]; NSString *text2 = [[NSUserDefaults standardUserDefaults] stringForKey:@"passw"]; if (text1 ) { username.text = text1; } if (text2 ) { passw.text = text2; } }
- 11月2日-4日学习CoreData和storyboard小结
- 11月2日小结
- 11月1日学习小结
- 11月1日小结
- 8月11日小结
- 8月4日小结
- 8月2日小结
- 2015年5月4日星期一 Xml学习小结
- 10月10日学习小结
- 2月11日iOS学习笔记
- 11月4日
- 11月4日
- 11月2日
- 11月2日
- 11月2日
- 11月2日
- 11月2日
- 数论小结—11月26日
- UITableView自我小结
- UML ---部署图
- 一个合格的程序员应该读过哪些书
- 关于MATLAB 做FFT的两个问题
- 排序问题(一)
- 11月2日-4日学习CoreData和storyboard小结
- fmt标签的使用
- UISwitch 开关控件—IOS开发
- Useful Information about 'Workflow Background Process' Concurrent Program
- 机器翻译自动评测方法BLEU值方法
- JSTL标签库之fmt标签
- HP/H3C and Huawei SNMP Weak Access to Critical Data
- 继承问题
- 使用html5 canvas 画一台小单车动画