继续Get News List
拿到news list 所需要的技能
- json数组反序列化
- iOS中有哪些集合对象
- 数组的遍历
- Debugging with GDB
json数组反序列化
id jsonObject = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingAllowFragments
error:&error];
if([jsonObject isKindOfClass:[NSArray class]])
{
NSArray *newsArray = (NSArray *)jsonObject;
for (int i=0; i<[newsArray count]; i++) {
id newsOjbect = newsArray[i];
if([newsOjbect isKindOfClass:[NSDictionary class]])
{
NSDictionary *deserializedDictionary = (NSDictionary *)newsOjbect;
News *news = [[News alloc]init];
[_newsList addObject:news];
if([deserializedDictionary objectForKey:@"Title"])
{
news.title=[deserializedDictionary objectForKey:@"Title"];
}
if([deserializedDictionary objectForKey:@"SubTitle"])
{
news.subTitle=[deserializedDictionary objectForKey:@"SubTitle"];
}
}
}
}
iOS中有哪些集合对象
Array Objects
对象的有序集合,NSArray,NSMutableArray
{
NSArfray *monthNames =[NSArray arrayWithObjects:@"January",@"Februay",@"March",nil];
for(int i=0;i<12;i++)
{
NSLog (@"%@",[monthNames objectAtIndex : i]);
}
}
当然,我们也有语法糖,
{
NSArray *monthNames = @[@"Januar",@"February",@"March"];
for(int i=0;i<12;i++)
{
NSLog(@"%@",monthNames[i]);
}
}
@autoreleasepool
{
NSMutableArray *numbers = [NUMutableArray array];
for (i = 0; i<10; i++)
{
numbers[i] = @(i);
}
}
Debugging with GDB
See here apple
Making an Address Book
Address Book 是address cards 的集合
Creat an Address Card
@interface AddressCard : NSObject
-(void) setName: (NSString *) theName;
-(void) setEmail: (NSString *) theEmail;
-(NSString *) name;
_(NSString *) email;
-(void) print;
@end;
-(void) setName: (NSString *) theName{
name = [NSString stringWithString : theName];
}
@autoreleasepool{
AddressCard *card1 = [AddressCard alloc]init];
}
当然,我们还是喜欢语法糖
@synthesize name,email;
The AddressBook Class
@interfact AddressBook : NSObject
-(instancetype) initWithName: (NSString *)name;
@end;
使用instancetype而不是id来作为构造函数或者工厂方法的返回值。当然,我原来是直接使用当前对象类型的。返回id谁都知道不太安全。
使用copy 和 strong 的简单的区别,一般来说我们操作的都是NSString, 两者无差。正常人也不太会用上NSMutableString, 用上时候该注意这两者的区别。
init
-(instancetype) initWithName: (NSString *)name
{
self = [super init];
if(self)
{
bookName = name;
book = [NSMutableArray array];
}
return self;
}
-(instancetype) init
{
return [self initWithName:@"NoName"];
}
遍历数组
-(void) list
{
for(AddressCard *theCard in book)
{
.....
}
}
有了这个基础,我们就可以改造上面的dirty code了。
NSArray *newsArray = (NSArray *)jsonObject;
for(NSDictionary *newsDictory in newsArray)
{
News *news = [[News alloc]init];
[_newsList addObject:news];
if([newsDictory objectForKey:@"Title"])
{
news.title=[newsDictory objectForKey:@"Title"];
}
if([newsDictory objectForKey:@"SubTitle"])
{
news.subTitle=[newsDictory objectForKey:@"SubTitle"];
}
}
NSValue
大家都懂的装箱和拆箱,这个是各种值类型都装到里面去。NSNumber 用来装数字,当然这个显然是NSValue 的子类。
字典的语法糖
if([newsDictory objectForKey:@"Title"])
{
news.title=[newsDictory objectForKey:@"Title"];
}
if([newsDictory objectForKey:@"SubTitle"])
{
news.subTitle=[newsDictory objectForKey:@"SubTitle"];
}
我们改成
for(NSDictionary *newsDictory in newsArray)
{
News *news = [[News alloc]init];
news.title =newsDictory[@"Title"];
news.subTitle = newsDictory[@"SubTitle"];
[_newsList addObject:news];
}
断点的删除
前一阵子一直找不到如何快速删除断点,原来是可以直接拖拉去掉的。xcode 的设计人员估计也是醉了。
随机推荐
- 保存字符串到手机SDcard为txt文件
try { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sdCardDir ...
- git分支的合并
原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一.如何分支的合并 在git中,可以使用 ...
- 套接字Socket
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的.UDP( ...
- <a href=”#”>与 <a href=”javascript:void(0)” 的区别
<a href=”#”>中的“#”其实是锚点的意思,默认为#top,所以当页面比较长的时候,使用这种方式会让页面刷新到页首(页面的最上部) javascript:void(0)其实是一个死 ...
- chrome调试命令模式
哈哈哈
- ffmpeg-20160512-git-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- 打开VS2012的创建单元测试功能
在VS2010中,在类中点击右键,有一个创建创建单元测试命令,可以很方便的生成单元测试项目和代码.但不知道为什么VS2012反而没有这个功能. 网上搜了一下,好在这个功能是可以通过配置打来的. 传送门 ...
- 使用iScroll时,input等不能输入内容的解决方法(share)
最近做移动平台的应用,使用iscroll使屏幕上下滑动.发现当使用iscroll后,input等不能输入内容了.只要在iscroll.js文件中加入如下代码就ok了. function allowFo ...
- jQuery与JS的区别,以及jQuery的基础语法
*在使用jQuery时,要在页面最上端加上 <script src="../jquery-1.11.2.min.js"></script> 看一下js与jQ ...
- jquery this 与javascript的this
<div class="list"> <table> <thead> <tr> <th width="110&quo ...