第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)
来源:互联网 发布:网络信息安全防护体系 编辑:程序博客网 时间:2024/05/01 18:38
NSString
1)rangeOfString:截取指定字符串的长度;
NSRange rRange = [newEmotiontextrangeOfString:seperateroptions:NSNEXTSTEPStringEncodingrange:pointer];
2) substringToIndex:7:截取从0 索引到指定索引(7)长度的字符串
3) substringFromIndex:9:截取从指定索引(9)到末尾长度的字符串
4) NSRange range = NSMakeRange(0,7);截取从指定索引(0)到指定(7)长度的字符串
5) substringWithRange:range:截取从指定索引(0)到指定(7)长度的字符串
6) isEqualToString:@"p://www":比较字符串包含关系,区分大小写
7) stringWithFormat:格式化字符串。
8)stringByAppendingString:
NSString* str2 = @"";//必须初始化才行,不然没有效果的
str2 = [str1 stringByAppendingString:@","];
9)去空格
NSString
*cleanString = [text stringByTrimmingCharactersInSet:[
NSCharacterSet
whitespaceAndNewlineCharacterSet]];
NSString和c++ string互转
9) c++ string转NSString
string str = [aNSString UTF8String];
10)NSString转c++ string
string str("testStr");//前提是这个string是以utf-8编码的
NSString * aString = [NSString stringWithUTF8String:str.c_str()];
NSData
iOS 头文件中NSData的定义如下:说明这是一个缓冲区。
包含首地址和长度,那么跟NSString相比的话,NSData像是NSString的游标。
可以获取任意长度的内容,但是NSData本身没有存储实质内容。
@interface NSData :NSObject <NSCopying,NSMutableCopying,NSCoding>
- (NSUInteger)length;
- (constvoid *)bytes;
@end
//1.NSString 转换成NSData对象
NSData* data = [@"testdata"dataUsingEncoding:NSUTF8StringEncoding];
//2.NSData转换成NSString
NSString* result = [[NSStringalloc]initWithData:data encoding:NSUTF8StringEncoding];
//3.NSData转换成char*这个应该最简单
char *test = (char*)[data bytes];
//4.char*转换成NSData对象
Byte* tempData =malloc(sizeof(Byte)*16);
NSData* content = [NSDatadataWithBytes:tempDatalength:16];
NSIndexPath
NSIndexPath是一个对象,它用来表示一个树形的记录地址。
比如下图1:
Method:
+(id) indexPathWithIndex:(NSUIInterger) index,创建一个节点的indexPath。
+(id)indexPathWithIndex:(NSUIInterger*)indexs Length:(NSUIInterger)Length.
其中,indexs是一个数组,用来出事后indexpath对象,length是深度,即数组的长度。
如何使用:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
第一次看到NSIndexPath是在UITableView的实例中,请参考我的博文 http://blog.csdn.net/hherima/article/details/8628829
查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为:dataSource和delegate。
dataSource 是UITableViewDataSource类型,主要为UITableView提 供显示用的数据(UITableViewCell),指定UITableViewCell支持的编辑操作类型(insert,delete和 reordering),并根据用户的操作进行相应的数据更新操作,如果数据没有更具操作进行正确的更新,可能会导致显示异常,甚至crush。
delegate 是UITableViewDelegate类型,主要提供一些可选的方法,用来控制tableView的选择、指定section的头和尾的显示以及协助完成cell的删除和排序等功能。
提到UITableView,就必须的说一说NSIndexPath。UITableView声明了一个NSIndexPath的类别,主要用 来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代 表在该section中的第几行。
NSURL
NSURL其实就是我们在浏览器上看到的网站地址,这不就是一个字符串么,为什么还要在写一个NSURL呢,主要是因为网站地址的字符串都比较复杂,包括很多请求参数,这样在请求过程中需要解析出来每个部门,所以封装一个NSURL,操作很方便:
- NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/s?tn=baiduhome_pg&bs=NSRUL&f=8&rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709"];
- NSLog(@"Scheme: %@", [url scheme]);
- NSLog(@"Host: %@", [url host]);
- NSLog(@"Port: %@", [url port]);
- NSLog(@"Path: %@", [url path]);
- NSLog(@"Relative path: %@", [url relativePath]);
- NSLog(@"Path components as array: %@", [url pathComponents]);
- NSLog(@"Parameter string: %@", [url parameterString]);
- NSLog(@"Query: %@", [url query]);
- NSLog(@"Fragment: %@", [url fragment]);
- NSLog(@"User: %@", [url user]);
- NSLog(@"Password: %@", [url password]);
结果:
- 2012-08-29 15:52:23.781 NSurl[3560:f803] Scheme: http
- 2012-08-29 15:52:32.793 NSurl[3560:f803] Host: www.baidu.com
- 2012-08-29 15:52:39.102 NSurl[3560:f803] Port: (null)
- 2012-08-29 15:52:42.590 NSurl[3560:f803] Path: /s
- 2012-08-29 15:52:52.516 NSurl[3560:f803] Relative path: /s
- 2012-08-29 15:53:05.576 NSurl[3560:f803] Path components as array: (
- "/",
- s
- )
- 2012-08-29 15:53:32.861 NSurl[3560:f803] Parameter string: (null)
- 2012-08-29 15:53:37.528 NSurl[3560:f803] Query: tn=baiduhome_pg&bs=NSRUL&f=8&rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709
- 2012-08-29 15:53:52.942 NSurl[3560:f803] Fragment: (null)
- 2012-08-29 15:53:54.539 NSurl[3560:f803] User: (null)
- 2012-08-29 15:53:57.808 NSurl[3560:f803] Password: (null)
NSClassFromString
NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。
正常来说,
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];和id myObj = [[MySpecialClass alloc] init];是一样的。
但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。
因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。
比如在iPhone中,NSTask可能就会出现这种情况,所以在你需要使用NSTask时,最好使用:
[[NSClassFromString(@"NSTask") .....]] 而不要直接使用[NSTask ...]这种写法。
NSClassFromString的好处是:
1 弱化连接,因此并不会把没有的Framework也link到程序中。
2 不需要使用import,因为类是动态加载的,只要存在就可以加载。因此如果你的toolchain中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
- 第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)
- 第三章、基本数据类型(iOS学习笔记,从零开始)
- 第二章、Objective-c 语法,继承,protocol和delegate(iOS学习笔记,从零开始)
- 第二章、Objective-C中的@property、@synthesize和dynamic的用法(iOS学习笔记,从零开始)
- 第四章、内存管理(iOS学习笔记,从零开始。)
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
- 数据结构与算法分析学习笔记---第三章(链表)
- 深入解析Oracle学习笔记(第三章)
- 《Linux bash基本应用-学习笔记》---从零开始
- nginx 学习笔记(三)基本数据结构
- 算法导论 第三部分 基本数据结构 笔记
- 第一章、环境搭建(iOS学习笔记,从零开始。)
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号...
- 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
- 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
- iOS学习笔记26-iOS中Cookie的使用和解析
- 第二章、Objective-c 语法,类/属性/函数(iOS学习笔记,从零开始。)
- 第二章、小实例,画字,画线,矩形,画图,动画(iOS学习笔记,从零开始。)
- log4j写入mysql数据库
- HP-UX下的抓包工具nettl
- Android 累计未读通知的数量
- 网址
- extern的使用
- 第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)
- 大表更改默认值使用alter table不重建表,直接修改.frm
- Socket中如何设置连接超时
- 定义string变量为str,内存流变量为ms,比特数组为bt
- struts2 标签的使用之一 s:if
- Cakephp中pageHelper中的分页应用
- js 处理cookie
- jquery选择器大全(转)
- 之前遇到的一个挂载bug