继续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 的设计人员估计也是醉了。
随机推荐
- ndk学习9: 动态使用共享库
动态使用共享库函数 dll_main 环境介绍 续上节代码 目录结构: android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEA ...
- phpcmsV9.5.8整合百度编辑器Ueditor1.4.3教程
最近在搞phpcms视频功能,官方的视频功能实在是坑,刚开始是想将优酷的上传功能集成到ckeditor,在coding上有个项目,上传已经集成好了,还没有做上传后视频的获取和显示 项目地址:https ...
- IP转换成LONG 的 问题
如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如 <?php echo ip2long("10.2.1.3"); ?> ...
- PHP的反射类ReflectionClass、ReflectionMethod使用实例
PHP5 具有完整的反射API,添加对类.接口.函数.方法和扩展进行反向工程的能力. 反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括 ...
- SqlServer中的Null值空值问题
sql使用的是三值谓词逻辑,所以逻辑表达式返回的结果可以为True.False或者未知,在三值逻辑中返回True与不返回False并不完全一样, SQL对查询过滤条件的处理:接受TURE 拒绝FAL ...
- display:inline 遇上 li 无效? why?
若制作导航栏时,使用列表li 的定义时,若想加上一个背景图 ,这时候若定义li的一个属性为:li{display:inline ; width:83px; height:30px;},则浏览器会无视后 ...
- join
一句话 join(param) 是把 array 连城一个字符串,中间用 param隔开
- POJ 1068
http://poj.org/problem?id=1068 这道题是一道模拟的题目 题目大意呢,p代表前面的'('的个数,而w代表这个括号所包括的括号的个数: 给你p,要你求w: 解题思路: 首先, ...
- Appium 服务器参数
# Appium 服务器参数 使用方法: `node . [标志]` ## 服务器标志所有的标志都是可选的,但是有一些标志需要组合在一起才能生效. <expand_table> |标志|默 ...
- 括号配对问题_栈<stack>
问题 A: 括号配对问题 时间限制: 3 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版] 题目描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行 ...