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中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。