一、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

iPad的开发Model与文件管理相关推荐

  1. ipad iphone开发_如何修复iPhone或iPad上崩溃的应用程序

    ipad iphone开发 N.Z.Photography/ShutterstockNZ摄影/快门 Apps can crash or freeze on iPhones and iPads, jus ...

  2. ipad iphone开发_如何在iPhone或iPad上查看照片的EXIF元数据

    ipad iphone开发 If you want to get more information about a photo you took, there's an easy way to do ...

  3. 【IOS 开发学习总结-OC-60】ipad应用开发的一些知识

    [IOS 开发学习总结-OC-60]ipad应用开发的一些知识 ipad与iPhone上 管理有层次的工作流的不同 iPhone上:通过NavigationController,用户可以从上一层界面A ...

  4. 文件管理器android实现,Android开发之简单文件管理器实现方法

    易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...

  5. iOS 7 iPhone iPad应用开发技术详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS 7 iPhone iPad应用开发技术详解 本书内容全面,从 Objective-C语法知识.iOS功能特 性,到高级 ...

  6. ipad iphone开发_如何在iPhone或iPad上更改应用程序的语言

    ipad iphone开发 BigTunaOnline/Shutterstock.comBigTunaOnline / Shutterstock.com Apple's iOS 13 makes th ...

  7. ipad iphone开发_如何将iPhone或iPad置于恢复模式

    ipad iphone开发 If your iDevice starts acting strangely and you've run through the gamut of normal tro ...

  8. Windows平台上安装搭建iPhone/iPad的开发环境

    很多朋友希望在体验或学习iphone开发,但是iphone开发环境一般需要 安装在mac计算机下mac os中. 这给许多朋友带来了额外成本投入. 网上已经有各种破解方法,在非苹果电脑上安装iphon ...

  9. iPad app 开发概述

    Why iNotes? 为什么要开发iNotes? (iPad开发系列文章一) http://anxonli.javaeye.com/blog/704248 文章分类:移动开发 没有上来写东西n久了. ...

最新文章

  1. 安卓Android科大讯飞语音识别代码使用详解
  2. Matlab函数bwmorph
  3. 全国战争linux添加eth0,linux服务器双线路接入配置
  4. bootstrap mysql源码_Django+Bootstrap+Mysql 搭建个人博客 (六)
  5. android 获取sd卡视频文件名,android – 如何获取SD卡上的视频列表
  6. K - Repeating Decimals(循环小数)
  7. 第四季-专题6-Linux内核子系统
  8. 复选框式查询 例题租房子
  9. 解决LDAP客户端统一认证DirectoryEntry出现 Ox80005000的问题
  10. android开发下载网络图片到相册工具类适配Q及以上
  11. dell服务器分区表修复,如何修复被Partition Magic损坏的分区表
  12. 2021年应用市场放假安排
  13. 使用Tesseract训练lang文件并OCR识别集装箱号
  14. Merriam-Webster‘s Vocabular Builder ( BELL )
  15. Gido推出电商快递服务,从中国到越南只需三天
  16. 完全重映射和部分重映射分析(超详细)
  17. matlab基于遗传算法的最大熵值法的双阈值图像分割
  18. RSA node解密 java 加密的注意事项
  19. 探讨如何在Linux上通过windows的域控制上网( by quqi99 )
  20. 华为快应用-web标签无法加载http和https混载的html页面

热门文章

  1. X210刷Android4.0.4系统
  2. 尼康显微镜软件下载_Z 5是尼康最便宜的全画幅无反光镜
  3. 基于springboot高校闲置物品交易系统微信小程序源码和论文
  4. 互联网风口过去了吗?
  5. 智能外呼系统到底有多智能?
  6. 怎么快速有效提升店铺DSR
  7. 制冷原理与设备资料下载- 李晓东
  8. 技术员联盟 Ghost Xp Sp3 纯净版 v2.5
  9. Win10 Pycharm安装码云(Gitee)插件
  10. daad转换器实验数据_实验十DAAD转换器教程解析.ppt