iPad的开发Model与文件管理

一、ipad编程

乐吧项目练习:

1.最少实现其中的两个界面

要求:

1..使用MVC设计模式

2.自拟两个界面,其中有乐吧(页 必选)

3.每一个界面都有自己的一套MVC

4.实现两个界面功能的算及格

ipad编程中得两个控件(特有的)

1.1 拆分视图由一个 UITableView和一个UIViewController组合。

        1.2 两部分 

             左侧的视图 用于显示列表内容 + 带导航控制器

             1>以前学过的所有跟导航控制器相关的内容都可以用。

             2>1.UITableView的编辑模式

                 2.1 Cell的多行选中状态

                 2.2 UITableView在导航  索引条 --->放大镜

                      搜索条--->输入某一个邮件 或 笔记的标题

            3>UITableView高级

                带有折叠效果的TableView

                C语言程序设计

                    c_day01.txt

                    c_day02.txt

    c_day03.txt

                    c_day04.txt

                OC语言程序设计

                    oc_day01.txt

                    oc_day02.txt

                UIKIT框架

                    ui_day01.txt

                数据持久化

                多线程

                网络和网络请求

                项目积累

            4>右侧视图   UIViewController  展示视图

                 1>需要在左侧的 标示图中声明 展示视图的属性

                 2>使用拆分视图中的.viewControllers 这个属性,中的lastObject来创建这个 展示视图。

                 3>左侧TableView 的dataSource  delegate方法3 + 1;

                 4>如果涉及到传值  灵活考虑(8种传值方式选一种)

                  2.弹出视图(iPhone不能使用,只能在iPad上用)

             2.1 如果iPhone上想用  自定义控件

             步骤:  第一步:要弹出的视图 UIViewController 实例化

                           第二步:设置弹出视图--->指定---->实例

                           第三步:设置弹出视图的大小(自拟)

                           第四步:设置代理

                           第五步:弹出视图---->传值(单例  属性  协议 Block等)

     1.拆分视图UISplitViewController

    使用步骤: 注意:创建的工程必须是iPad工程(iPad控件)

    第一步:拖拽一个UISplitViewController

    第二步:创建两个类

                    第一个类 类型UITableViewController 带导航

                    第二个类 类型UIViewController

   第三步:设置UISplitViewController自动生成的 UITableViewCell  在属性检查器中指定唯一标示  "Cell"

   第四步:在UITableViewController中声明一个 右侧展现视图的属性(Detail)

                   DetailViewController *dvc = [self.splitViewController.viewControllers lastObject];

  第五步:实现UITableView的代理方法 3 + 1

 第六步:传值 从UITableViewController  ----->UIViewController展示出要展现的内容。

练习:使用拆分视图 实现 我的笔记的小项目,要求独立完成。左侧的列表视图显示出笔记的天数,

day01.txt 

day02.txt 

day03.txt 

day04.txt 

day05.txt     -->右侧是展现视图  day05  循环

day06.txt                                          1.for循环

day07.txt                                          2.while循环

day08.txt                                          3.do...while循环

day09.txt                                          ......

day10.txt 

需求:1.能够点击左侧的列表 在右侧的视图中显示笔记的内容

2.在右侧视图中自定义一个View 

      View上 有字体放大 字体缩小  字体颜色按钮的设置

      字体放大:可以放大字体(每次放大1个字号)

      字体缩小:可以缩小字体(每次缩小1个字号)

3.使用UITextView显示 笔记的内容

   3.1 要求使用 字符串的自适应高度

            复习的是View层的知识 day02~day03

            ios6/ios7 字符串自适应高

            NSAttributedString 带属性的字符串  字体的大小 颜色

   3.2 用于图文混排  

            UITableViewCell自适应高度

            例如:朋友圈 是一个变高的Cell。

            练习:UITabelView中 Cell高度根据 字符串的内容 自定适应高度,创建一个dataArray的数组,

           @"你存在我深深的脑海里,我的梦里,我的心里,我的歌声里,你存在我深深的脑海里,我的梦里,我的心里,我的歌声里,你存在我深深的脑海里,我的梦里,我的心里,我的歌声里,你存在我深深的脑海里,我的梦里,我的心里,我的歌声里,",

           @"iPhone6国行 预计10.10日上市,水货iPhone6吐血大甩卖!降价3000+";

           @"祝大家都能8000+高薪就业!";

4.左侧的UITableView上的UINavigationItem 有Edit用于删

      除编辑TableView 实现删除Cell。右侧添加一个Add,用 

      于添加Cell。

5.使用弹出视图 修改颜色。

2.弹出视图UIPopoverController

   步骤:

   1.第一步: 在Detail 视图中  声明一个弹出视图的属性

   2.第二步: 创建一个弹出视图要弹出的内容

      是一个视图控制器的类型

      UIViewController 类  ------->0.0显示一部分。

   3.第三步:设置弹出视图的大小  320 *1100

      根据自己的需要定制弹出视图的大小

   4.第四步:设置弹出视图的代理人(委托人)

   5.第五步:弹出对话框


二、文件管理

2.1 文件管理器  NSFileManager(操作目录,操作文件

     对文件或目录 ,进行管理提供

     1>文件的创建

     2>判断指定路径上的文件是否存在//检测指定路径上是否存在某一个文件

     3>文件的重命名

     4>文件或目录的复制   

     5>文件或目录的移动

     6>文件的删除等

   7>拿到文件的属性(字典类型)

          7.1 属性中一些重要key   NSFileSize---->值 

          7.2 大小的单位(字节数)  65002400 字节

        8>NSFileManager管理沙盒路径

2.2 NSFileManager对文件的管理

  对文件的操作都是一种宏观上的操作,不能够对文件进行读写等细化的操作,如过多文件要求细化的操作需要使用

NSFileHandle文件柄,可以精确控制每次读取的内容的字节数。如:每次读500字节。

2.3 Mac OS X系统中:文件的大小 是以字节来区分。文件的单位是字节。

2.4 例:系统复制文件的过程。

 3.1 如何创建一个文件管理器

  3.2 用文件管理器 创建文件

 3.3 用文件管理器 检测指定路径上是否存在某文件

 3.4 用文件管理器 删除文件

3.5 用文件管理器 拿到文件的属性。

                    key:NSFileSize  ----->value:   xxxxx字节数

                    知道文件的属性是用字典来保存的。

注:文件管理器对文件的操作 不是精细化的操作,也就是时候不能读取指定的字节。

补充:如何拿目录       


4.NSFileHandle    文件柄

              4.1创建NSFileHandle的实例

                  1>读文件   [infile   ...read...]

                  2>写文件  [tofile  ...write...];

         1>读数据   精确到字节 500字节

         2>写数据   精确到字节 500字节

         3>例子  模拟文件的拷贝过程(读一个大数据----->分块--->循环的读入到内存中----->创建文件的)

              4.2 读文件/写文件

           NSData/NSMutableData/ 数据缓冲区/二进制数据

                 1>读数据对应两个方法

                     1.1 readDataOfLength:指定长度 

                      1.2 readDataToEndOfFile 一直读完

              4.3 使用完毕以后

                   使用完毕以后  关闭文件 closeFile

              例:Demo_拷贝文件      

        5.UITextView 文本视图

           多行输入/多行显示文本内容/textKit实现图文混排。

           注意的是  拖拽控件的时候,textView的frame应该在

           最右侧让出一部分距离,直到能看到右侧的滚动条为

           止。如果是手写代码  frame.size.w - (80~100)

        6.属性字符串/绘制字符串/ios6 ios7

        7.UITableView 中Cell高度的自适应。二、沙盒/沙箱

ios App每一个程序都一个沙盒,用来存储应用程序的配置,以及缓存数据等。

         3.屏幕横屏或竖屏的检测

         3.1 横屏状态的检测

         3.2 竖屏状态的检测

         3.3 补充点(播放视频的时候)

 4.封装自己的三方库(高级)

       4.1 封装自己关于 ScrollView

       4.2 封装自己关于 TableView

       4.3 封装自己关于 UIImageView----->SDWebImage

       4.4 封装自己关于 数据库的管理类

       4.5 封装自己关于 网络的管理 + 多线程 +Block

       4.6 封装自己关于 Layout的布局类

5.沙盒(路径)以及沙盒的目录结构

      5.1 模拟器的路径怎么拿到

      5.2 真机下得路径怎么拿到

      5.3 如何往沙盒路径中写入数据

      5.4 如何从沙盒中的文件读取数据

      5.5 分别拿到沙盒目录结构中的三个目录(子目录)

      5.6 需要真机的设备

1.什么是沙盒

   ios应用程序只能在为该应用创建文件的系统中读取文件,不能取其它的位置访问,这样的区域我们就成为是沙盒。

如:模拟器中的一个程序的沙盒位置。

   程序中所有的非代码文件都保存在沙盒中,比如应用程序的图标,图片,声音,影像,属性列表 文本文件等。

2.如何找到沙盒的地址

   2.1 在Finder资源管理器中---->按住option---->显示隐藏的资源库----->ApplicationSupport--->iPhone Simulator

---->7.1(4 4s 5 5c的应用)或7.1-64(5s 6 6+ 6s)--->Applications---> 2F491B99-45E9-4363-8A0F-C7C3FB678871(沙盒的位置)

   2.2

3.沙盒目录结构

   3.1 对应三个目录

         Documents:Apple官方建议将程序中建立的或程序浏览的文件数据都保存在Documents 目录里,itunes备份数据时或恢复数据时,itunes备份或恢复包含该目录。

         Library:主要存储的是默认的设置 或 其它的状态信息。

         Preferences存储的是用户设置 xxx.plist文件   Caches存储缓存文件,itunes备份 不会备份该目录

         tmp:提供的是一个存储临时文件的地方。iPhone一旦重启tmp目录下的内容就会被清空。

         以及一个编译链接以后生成 xxxx.app 应用程序

二、模型层 ------->数据库

1.注意的是UIImageView 图片是不能直接写到MVC

   Model层的,因为数据库不能直接存储图片类型的格式,

   NSString存路径,NSData存入到数据库中。

2.Foundation类型(不能出现视图UIKIT框架中的控件)

3.工程目录 NSBundle

    3.1>是什么

    Bundle是一个目录,其中包含了 工程中使用的声音,图像,资源,以及编译好的代码 .nib文件等。

    IOS系统提供了一个NSBundle的类进行管理。

    3.2>怎么用

    第一步:拿到工程路径

    [[NSBundel mainBundle]pathForResource:@"资源的名称" ofType:@"类型"];

    参数:资源的名称  Red.mp3

    //开发中都是套写

    [[NSBundel mainBundle]pathForResource:

                                         @"Red.mp3" ofType:nil];

    //教学上

    [[NSBundel mainBundle]pathForResource:

                                         @"girl" ofType:@"png"];

    练习1:从工程中的一个bj.txt文件中读取数据,显示到UITextView上。

2.NSData 二进制数据(缓冲区)对象

    2.1UIImage类型<----->数据库中

          1> 字符串名称或路径

          2> 图片转换成NSData存到数据库中

   2.3 Foundation类型<----->NSData类型

         字符串如何转化成NSData

   2.4 bytes数组----->16位 网络字节序<------>NSData

3.Plist文件   属性列表文件

3.1 用来存储用户的设置以及配置文件

     保存程序的一些基本配置内容 比如 工程的名称,比如 本地化国际化的语言等。

     常常用来存储 游戏Cocos2d-x中的 瓦片地图/图片资源

3.2 在Objective -C中 plist可以存储Foundation中数据类型

       NSString 字符串类型

       NSArray 数组类型        ------>book.plist

       NSDictionary 字典类型

   保存程序 工程配置信息  存储我们的数据

   Foundation框架中的四大类型的数据都可以直接写入到plist文件中。

   plist文件中可以存数组  字典  字符串   Data等。

   通常都用它存储配置文件,游戏中cocos2d-x 中用plist文件来存储游戏中的图片。

   工程的配置:

   1.工程的名称

   2.屏幕可以旋转的样式

   3.本地化和国际化的语言等

    4 .plist文件的读取(MVC例子  以及Objective-c阶段关于plist文件的读写的例子)(理解)

4.NSUserDefaults 以及传值(了解)   

5.XML格式文件的解析(掌握)

    5.1 SAX   

           基于事件模型的XML解析的方式、

    5.2 DOM

           基于文档模型的XML解析的方式

    5.3 文件格式的基本语法

    <?xml version="1.0" encoding="utf-8" ?>

<root>

    <books>

       <book id="1"language="ch">

           <name>乔布斯传</name>

           <auther>

               <name>沃尔特·艾萨克森</name>

           </auther>

           <price>80.00</price>

           <summary>一本介绍乔布斯传奇一生的图书。</summary>

           <public>电子工业出版社</public>

        </book>

        <book id="2" language="ch">

            <name>呐喊</name>

            <auther>

                <name>鲁迅</name>

            </auther>

            <price>12.00</price>

            <summary>揭示了中国的社会面貌,控诉了封建制度的罪恶,喊出了“五四”时期革命者的心声。它反映了“五四”彻底不妥协地反封建主义的革命精神,适应了中国革命从旧民主主义向新民主主义转变的需要,在中国现代文化史和文学史上占有重要地位!</summary>

            <public>电子工业出版社</public>

            <image>http://218.247.142.206/pic/01.png</image>

        </book>

        <book id="3" language="en">

            <name>哈利波特</name>

            <auther>

                <name>JK罗琳</name>

            </auther>

            <price>365.00</price>

            <summary>主人公哈利·波特在霍格沃茨魔法学校六年的学习生活和冒险故事。</summary>

            <public>电子工业出版社</public>

            //自己添加其他的字段进行解析

        </book>

    </books>

</root>

解析:

1.第一行  <?xml version="1.0" encoding="utf-8" ?> 表示XML格式的文件的版本和 编码格式UTF-8 默认的格式

2.<roo></root>根节点,在XML格式的文件中<root> ….. </root>

3.<books>是一个XML格式的元素,元素是可以嵌套,一个元素可以有多个子元素。往往就对应IOS中的一个数组

4.第四行<book id="1"language="ch"> 又是一个标签 id = "1"表示的属性,id属性的值是1,language = "ch"语言属性的值是中文>

       <book id="1"language="ch">

           <name>乔布斯传</name>

           <auther>

               <name>沃尔特·艾萨克森</name>

           </auther>

           <price>80.00</price>

           <summary>一本介绍乔布斯传奇一生的图书。</summary>

           <public>电子工业出版社</public>

       </book>

继续<name>乔布斯传</name>,下一个标签<auther>沃尔特·艾萨克森</auther>,下一标签<price>80.0</price>,<summary>一本介绍乔布斯传奇一生的图书。</summary>,<public>出版社<public>,</book>

注意:如果在使用第三库的过程中反复出现问题,如果路径都对,导入的库也是正确的,此时 关闭ARC。


练习:解析Citys中的XML格式的城市的地址,并打印出来。

城市的名称,和城市的经、纬度

2.XML解析 图片(静态  和 动态)

   图文混排   NSTextKit框架

   UITextView/UIWebView


1.掌握沙盒路径

   拿到我们应用程序的沙盒路径的方法,和拿到我们Mac OSX系统的主目录方法是一样的。

   注意:模拟器下的沙盒路径和真机下的路径是不一样的。

2.沙盒陌路的组成

   Doc

   Lib

   tmp

3.往沙盒中存储数据

4.Plist文件的读写

   写入内容到Plist文件中

   读取内容从Plist文件读

5.Foundation框架中的数据类型

   4大类型支持直接把内容写到文件中

   NSString 类型 及其 子类

   NSArray 类型  子类     XML格式存储的数据

   NSDictionary 类型  子类 XML格式存储的数据

   NSData 直接写入到文件中

二、NSData 和 NSMutableData 可变数据对象

1.NSData 和 NSMutableData 数据对象

存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛。

   A> 字符串类型 和 数据对象的相互转换

         1.NSString  类型 ------->NSData 类型 

         2.NSData 类型 ------>NSString类型

   B>文件中的操作  NSFileHandle 和 NSData

   C>UIImage 类型  和  NSData类型 的相互转换

        1.数据库里存储图片   

           1>存储图片的名称或路径

               car@2x.png, car@3x.png

               http://218.247.142.206/images/car@2x.png;

          2>如果图片是较小的

              UIImage类型  ---->NSData类型 存数据库

   D>NSMutableData 可变数据对象

       1.缓冲区用

       QQ音乐 ---->UI界面----->结构(数据的请求)

       客户端----->服务器端----->请求   我的歌声里.mp3

       songInfor:

       歌曲的名称:我的歌声里

       歌曲的作者:曲婉婷

       专辑名称:《我的歌声里》

       歌词地址:http://218.247.142.206/mp3/lrc/10000099.lrc

       歌曲的大小:412860

       歌曲的地址:https://api.music/mp3/加拿大/曲婉婷/我的歌声里/我的歌声里.mp3

       开始请求数据:200kb

       NSMutableData *data = [data addObject:obj];

   E>NSArray类型 转 NSData类型   

 数组转NSData是建立在归档的基础上,归档也称为序列化,在OC中NSString 对象  NSNumber对象  NSArray对象

NSDictionary字典对象  NSData 数据对象 这些类要进行数据保存时可以通过NSKeyedArchive 类来实现。

      Foundtaion框架提供的 归档和解归档的方式,也叫做序列化和反序列化的过程。

     第一步:导入头文件  归档和接归档

     #import <Foundation/NSKeyedArchiver.h>

     第二步:要有数据源

     NSString   NSArray  NSDictionary NSData 自定义类

     NSDictionary *dict =@{@"key<黑猫警长>":@"value<眼睛大的像铜铃铛!>",@"key<葫芦娃>":@"value<葫芦娃,葫芦娃一棵藤上7朵花>",@"key<黄金圣斗士>":@"天马流星拳",@"key<舒克和贝塔>":@"value<舒克舒克开飞机的舒克>"};

  NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];

  第三步:把字典或数组 用归档形式存到某一个文件中

  NSString *home = NSHomeDirectory();---->a.txt    

  [NSKeyedArchiver archiveRootObject:array];

 数组转NSData是通过归档来实现的。

 NSArry---->NSKeyedArchiver--->NSData

 NSData---->NSKeyedUnArchiver---->NSArray

 F>归档文件存到Plist文件中

     NSArray  ---->NSDictionary---->array--->archiver--->plist文件里

G>从Plist文件中解归档文件

     demo.plist--->unarchiver---->NSArray *arr---->NSDictionary *dict;

2.NSUserDefaults 

   1.NSUserDefaults是 ios系统提供的一个默认的app可以和系统进行交互的编程接口。

  2.干什么用:NSUserDefaults用来进行对象的保存,恢复应用程序相关的偏好设置,配置数据等。

    如:滚动视图 + NSUserDefaults 来做应用程序的引导换页。

   使用NSUserDefaults进行 界面间的传值。

   A界面 (类)   ----> NSUserDefaults---->B界面(类)

  3.原理是单例

     3.1 能够存储那些类型的对象

     NSString  NSArray NSDictionary NSData  NSNumber等,如果是自定义类型 把自定类 转成 NSData进行存储.

    3.2 是单例,同时NSUserDefaults 也是线程安全的。

  4. NSUserDefaults传值练习

四、异常

1.异常也叫异常处理,就是程序发生错误时的一种错误处理的机制。

2.有异常的好处就程序在发生错误时,不会直接闪退(立即退出),常常在读写文件  分配内存  读写数据库时我们使用异常处理。

如:读异常

           //指定的路径上没有这个文件?

           //不存在 ---->异常

           //就创建文件,请求数据,写到文件中。

           //访问数据库----->openfire

        写异常

           //往一个路径的文件写入数据(文件不存在)

           //抛出异常--->捕获异常---->创建了一个文件-->写

        。。。。

        业务逻辑中出现的异常

        a/b;   b = 0;分母为零

        异常了---->捕获--->处理异常---->写入日志

3.如何使用异常 

   @try

   @catch

   @throw

   @finally


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值