继续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 的设计人员估计也是醉了。
随机推荐
- PyQt4自定义事件
listview控件与updateText 相关联 self.listview.updateText.connect(self.viewlist) updateText = QtCore.pyqt ...
- NUI控件扩展
摘要:NUI组件是公司新一代的前端开发框架,它精致优雅的前端编程模型,是大家能够,或者想接受学习它的重要原因,在使用它的时候,一定不免会想增加自己的控件,让别人也能够如此优雅的使用. 其实NUI的扩展 ...
- 流程图制作在云上 https://www.processon.com/
流程图制作在云上 : https://www.processon.com/
- C++静态代码分析工具对比cppCheck与PreFast
具体内容参看文件<CppCheck和PreFast对Cplusplus代码静态分析测试.zip> C++测试源代码main.cpp #define NULL 0 #include < ...
- Mac 安装 eclipse
总是看着安卓的代码感觉手痒痒,闲来无事在 Mac 端安装了一下eclipse 提高逼格. 1.官网(http://www.eclipse.org/downloads/)下载所需的安装包,具体步骤如图: ...
- 240个jquery插件(转)
http://www.kollermedia.at/archive/2007/11/21/the-ultimate-jquery-plugin-list/File upload Ajax File U ...
- October 7th 2016 Week 41st Friday
The land didn't move, but moved; the sea was not still, yet was still. 大地止而亦行,大海动而亦静. Remember that ...
- !struct operator reload
struct t3DObject //对象信息结构体{ int numOfVerts; // 模型中顶点的数目 int numOfFaces; // 模型中面的数目 int numTexVertex; ...
- nmake geos
参考:http://blog.sina.com.cn/s/blog_82a2a7d301010f87.html 1 打开visual studio command prompt 该工具位于 开始程序 ...
- 实现 Bootstrap 基本布局
看到了一篇 20 分钟打造 Bootstrap 站点的文章,内容有点老,重新使用 Bootstrap3 实现一下,将涉及的内容也尽可能详细说明. 1. 创建基本的页面 我们先创建一个基本的 HTML ...