斯坦福iOS7公开课11笔记及演示Demo&&访问HTTPS连接下载数据

这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简化的。

最后调试过程中还找到Xcode中观察变量的一个小技巧。

    一.UITableView

UITableView是iOS中最常用的表视图,通讯录中的联系人、手机设置里的每一个选项都是表视图中的一个单元格cell,微信、微博每一条记录其实也是一个cell,只不过是组成要素更多一些而已。

1)两个重要的协议

UITableViewDataSource和UITableViewDelegate是UITableView里两个重要的协议(可以把协议理解成接口),前者用来实现单元格数据源的控制,包括两个必须实现的:指定单元格cell数量以及分组数量,其他诸如删除、移动等操作也是通过实现这个协议里的方法来使用。

UITableViewDelegate,这个协议提供用户与UITableView交互操作的一系列方法,比如最常用的点击单元格的响应方法。

2)cell的复用

为了节约资源,iOS会对cell进行复用,单独有一个地方存放移出屏幕的cell,当向上滑动UITableView时,如果队列中有可复用的cell,就可以直接取出使用,需要注意的是,这里的复用有一个限制条件,即cell的样式都相同。

二.iPad特有控件

iPad中有两种常用UI控件,弹出窗口UIPopoverController和目录-内容组合控件UISplitViewController,本次课程介绍了后者,UISplitViewController由两个视图组成,一个是目录视图master,一个是内容视图detail,Demo就是在master中使用UITableView显示图片名称,点击后在内容视图detail里加载对应图片。

这里有两点值得注意:

(1)根据UISplitViewController为iPad独有控件直接判断设备是iPhone还是iPad,UISplitViewController默认0是master目录视图,1是detail内容视图,使用UISplitViewController下,如果获取不到内容视图,设备就是iPhone,反之iPad。

(2)UISplitViewController协议里提供了方法来解决横竖屏时master视图是否显示的问题 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前设置

 三.Demo过程问题总结

Flicker目前被墙,所以需要FQ访问,然后注册申请API的key,然后验证发现只能通过https访问,所以对FilckerFetcher里的地址都修改为了https

下载得到的数据一直为nil,报错也是提示数据空,检查发现,请求HTTPS连接时不能使用+dataWithContentsOfURL:这个方法,因为无法设置安全验证相关,而请求HTTPS连接是必须对安全验证进行设置的,否则请求失败,所以得不到数据。

参考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate

这里使用了NSURLConnection的委托方法,来使客户端忽略证书验证(网络请求建议使用更新的NSURLSession或第三方类库AFNetWorking等)

参考:http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html

还有其它方法,没有进行尝试,这种方法据说是苹果不允许的,提交应用时会有问题。

 http://stackoverflow.com/questions/19394628/cant-receive-json-request-via-https-due-to-untrusted-certificate

      还遇到一个问题就是获取图片数据时报错,图片在屏幕上显示一小部分即消失,检查发现这是因为图片接收不完全导致,之前是在一接收到数据就马上转化图片,并通知主线程更新UI。

实际上应该数据接收完全后再做后续操作,因为数据可能多次才传输完全。

同样问题后来也出现在获取图片列表的json数据时(只是当时恰好数据一次就获取完全过,没注意处理)

 四.调试小技巧

用鼠标选中变量或者下方观察变量都可以,但有时始终觉得不方便,断点调试时可以在输出窗口输入“po 变量名”来观察变量赋值情况

Demo效果:

目前完整版Demo点击单元格还有bug,欢迎解决后告知原因,若有更新也会及时补充。

简化版Demo下载    完整版Demo下载

时间: 2024-08-02 06:58:10

斯坦福iOS7公开课11笔记及演示Demo&&访问HTTPS连接下载数据的相关文章

斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据

这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简化的. 最后调试过程中还找到Xcode中观察变量的一个小技巧.     一.UITableView UITableView是iOS中最常用的表视图,通讯录中的联系人.手机设置里的每一个选项都是表视图中的一个单元格cell,微信.微博每一条记录其实也是一个cell,只不过是组成要素更多一些而已. (1

斯坦福iOS7公开课10笔记及演示Demo

这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 一 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主要是GCD和NSOperation,前者是C语言级别的,后者是经过封装,更具有面向对象特性的API. (2)UI交互操作都是在主线程进行,所以为了保证交互过程的流程舒适,类似于下载等耗时操作就需要主线程外执行,否则将出现用户无法对手机进行操作的场景. 这时通过多线程,就可以使下载图片等耗时操作单独进

斯坦福iOS7公开课4-6笔记及演示Demo

1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不包含所写的调用方法时,编译通过,但在程序运行时才会报错. 2.简单介绍了框架自带的集合.字体等. 3.通过使用NSAttributedString可以让屏幕显示的字体样式更丰富,设置各种样式等,详细参见附件的演示Demo:http://files.cnblogs.com/colinhou/Attri

斯坦福iOS7公开课7-9笔记及演示Demo

这一部分主要介绍了iOS的绘图.手势.协议.block.力学特效动画(包括重力.碰撞.吸附等)以及自动布局的内容.    一.绘图.手势 (1)调用一个自定义的UIView时,可以使用awakeFromNib方法做一些初始化工作. (2)iOS中绘图需要了解的常用测量单位: CGFloat:浮点值,与float一样: CGPoint.CGSize.CGRect是三个结构体分别代表游XY坐标描述的店.宽度高度描述的大小值以及由原点坐标.宽度高度描述的矩形,度量单位都是CGFloat. (3)自定义

斯坦福iOS7公开课1-3笔记及纸牌Demo

1.MVC Model:模型 描述程序是什么,例如数据库操作之类的行文以及纸牌Demo里纸牌玩法都是写在Model这一层,通过Notification和KVO(后续文章会介绍)两种方式与Controller通讯. Controller:控制层 程序的逻辑在这里组织,Controller负责Model与View之间的沟通,因为Model与View老死不相往来. 当用户在页面进行操作后,Controller收集用户发出的交互信息,然后请教Model如何应对,Model收到Controller提出的问

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势

在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceView的代码中,之前定义了一个属性scal用来表示表情的缩放比例,现在我需要一个非私有的方法来修改这个值: func scale(gesture:UIPinchGestureRecognizer){ if gesture.state == .Changed { scal *= gesture.scal

斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 斯坦福机器学习公开课差不多是网上能找到的最好的机器学习入门课程了.现在一共有20节课放到网络上,博主是在网易公开课学的,那里的视频有中文字幕然后课件也很全. (地址:http://v.163.com/special/opencourse/machinelearning.html) 主讲师Andrew Ng(已经被百度诏安了)是华裔科学家,看他的课特别有亲切感.感觉他们的课跟国内老师的课区别还是挺大的

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户的顶层,分为四个层次: 1.Core OS层在最下层,很多人可能不知道IOS是一个基于UNIX的操作系统,它大量借鉴了Mac os X 的内核部分,Mac OS X我们肯定不会陌生,命令行的使用很好的证明了它是一个基于UNIX的系统.IOS针对移动设备对电池等硬件进行了系统的优化,但它仍可被看成是一

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记11 View视图

一个view(视图)是IOS中UIView的子类,标示了屏幕上的一个长方形区域,定义了一个坐标系空间来绘图,并且处理触摸的操作. view是有层次的,一个view只能有一个superview,但是可以有多个subview.你可以获取一个view,当然返回值是可选的,或者获取一个view的所有subview,返回值是一个数组,虽然这个数组中的元素其实是AnyObject,因为一些历史遗留原因,不过没关系它里面的内容百分百是UIView,你不会获取到别的东西. 另外还有一个东西叫做UIWindow,