11月2日-4日学习CoreData和storyboard小结

本文介绍了如何在iOS应用中使用CoreData进行数据管理和模型构建,并详细解释了模型关系及NSFetchedResultsController的使用。此外,还探讨了StoryBoard的基本用法及控制器之间的切换技巧。

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 =[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];

    managedObjectContext每个vc都要有,所以

//使用AppDelegate

    AppDelegate * appDelegate = [[UIApplication sharedApplication] 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.navigationController setNavigationBarHidden:YES animated:TRUE];这个在ViewDidLoad和WillDisappear中起到隐藏导航栏的作用.

功能二:在CoreData中利用关系抽出关联登陆账号的列表,保存联系人时存进账号的一对多关系数组中

   detailItem =[NSEntityDescription insertNewObjectForEntityForName:@"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, [error userInfo]);

        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;
        }
    }

源码直接下载地址: https://pan.quark.cn/s/d280357b18e5 在网页构建领域中,HTML5被视为当代网页工程的基础规范,其问世显著增强了页面的视觉表现力与用户互动性。本工程致力于运用HTML5技术开发一个电视剧信息展示页面,目的是呈现诸如剧名、演员构成、故事梗概等电视剧关键资料。接下来将深入阐释如何借助HTML5的结构化组件样式管理功能达成此项目目标。 我们必须掌握HTML5的核心框架。一个规范的HTML5文档一般包含`<!DOCTYPE html>`声明、`<html>`根标记、`<head>`头部标记`<body>`主体标记。在头部区域,可以配置网页的基本元数据,例如字符集设定、页面标题等。在主体部分,将具体构建电视剧信息列表的内容。 电视剧展示页面通常包含多个条目,每个条目对应一部电视剧。HTML5中的`<section>`标记用于内容模块化,适合表示单个电视剧的详细信息区域。每个`<section>`内部,可使用`<h2>`标题标记显示剧名,`<img>`图像标记插入宣传剧照,`<p>`段落标记呈现剧情介绍,而`<ul>`无序列表与`<li>`列表项标记则用于罗列演员阵容。 为了优化页面布局,需要借助CSS(层叠样式表)进行样式管理。HTML5引入了创新的CSS选择器与布局模型,例如FlexboxGrid,使页面布局更加灵活多变。在此场景下,可以利用Flexbox为电视剧信息列表实现自适应布局,保障在不同设备尺寸下均能呈现理想视觉效果。具体操作时,可将`<section>`标记设定为Flex容器,通过`display: flex;`属性,并运用`justify-content``align-items`属性调整子元素的对...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值