读书人

Objective C中的字符串及聚合

发布时间: 2012-11-22 00:16:41 作者: rapoo

Objective C中的字符串及集合

Objective C中的字符串及集合

一. NSString字符串

1. 基本概念:

1) Cocoa中提供NSString和NSMutableString两种字符串,前者用于处理内容不变、固定的字符串,而NSMutableString类用于处理内容可变的字符串;

继承关系:NSObjectàNSStringàNSMutableString

2) NSString的字符编码格式为Unicode编码;

NSStringEncoding:定义的常量

NSASCIIStringEncoding: ASCII

NSUTF8StringEncoding; UTF-8

NSUnicodeStringEncoding; UTF-16

2. 字符串的生成

1) 使用@””标识NSString字符串,如:

NSString str =@”yang”;

2) 但使用上述方式只能生成含有英文和数字的NSString实例,要生成含有汉子等双字节的字符串实例,必须使用:

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

- (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding

第一个方法创建自动释放型的实例。后一个方法是执行alloc方法后进行初始化的;

3) 使用格式创建字符串:

+ (id)stringWithFormat:(NSString *)format, ...

- (id)initWithFormat:(NSString *)format ...

格式本身是NSString串,因此加上@,如果里面有NSString字符串实例,用%@标识;

NSString str =[NSString stringWithFormat:@“%@pro”,str1];

4) NSRange用于定义一个数据的范围

NSRangerange = NSMakeRange(0,5);

3. 字符串处理

1) 字符串长度:- (NSUInteger)length

2) 取字符串某个位置的字符

- (unichar)characterAtIndex:(NSUInteger)index

3) 拼接字符串:

-(NSString *)stringByAppendingString: (NSString*)aString

-(NSString *)stringByAppendingFormat: (NSString*)format...

例:str2 = [str stringByAppendingString:@”%@%@”,str3,str4];

4) 求子字符串:

- (NSString *)substringFromIndex:(NSUInteger)anIndex

- (NSString *)substringToIndex:(NSUInteger)anIndex

- (NSString *)substringWithRange:(NSRange)aRange

5) 比较字符串大小:

- (BOOL)isEqualToString:(NSString *)aString

6) 比较前置和后置串:

- (BOOL)hasPrefix:(NSString *)aString

- (BOOL)hasSuffix:(NSString *)aString

7) 字符串检索:

- (NSRange)rangeOfString:(NSString*)aString

8)

二. NSMutableString字符串

1. 生成

生成方法与NSString相同,但是不能使用@的方法生成NSMutable字符串;

NSString:

+(id)string;//生成一个空字符串

2. 追加字符串

- (void)appendString:(NSString*)aString

- (void)appendFormat:(NSString*)format ...

3. 插入字符串

- (void)insertString:(NSString*)aString atIndex:(NSUInteger)anIndex

4. 删除字符串

- (void)deleteCharactersInRange:(NSRange)aRange

5.字符串可以进行文件的读写;

集合部分

cocoa中,数组、字典以及 集合部分都分可变和不可变两种;

可变的可以增加、删除和修改里面的数据,不可变的则不能;

三. NSObject àNSArray àNSMutableArray

在Objective C中也可以使用C语言的数组,如:NSString* names[6];

但是不方便,要使用NSArray数组,数组必须是Cocoa的对象。因此int,char这些数据类型不能直接包括在内(包装类可以实现)

1) 初始化:

指定一个对象初始化:

+ (id)arrayWithObject:(id)anObject

NSArray*array = [NSArray arrayWithObject:string];

2) 多个对象进行初始化

- (id)initWithObjects:(id)firstObj, ...

+(id)arrayWithObjects:(id)firstObj, ...

array= [NSArrayarrayWithObjects:@”tom”,@”yang”,@”blacks”,nil];

指定了多个对象后,最后一个参数必须指定为nil,否则出错;

3) 数组长度: - (NSUInteger)count

4) 通过索引获得对象:

- (id)objectAtIndex:(NSUInteger)index

在NSArray中,也可以通过索引来获取元素,但是不能使用C语言中括号中指定索引的方法,必须使用上面的方法;

5) 获取某个元素的索引位置:

- (NSUInteger)indexOfObject:(id)anObject

四. NSMutableArray

NSMutableArray是NSArray的子类,父类的所有方法子类都可以用。

1) 其他的初始化方法:

-(id) initWithCapacity:(NSUInteger) numItems

+(id) arrayWithCapacity:(NSUInteger) numItems

+ (id)array;//创建内容为空的数组;

2) 添加对象

- (void)addObject:(id)anObject

//

- (void)addObjectsFromArray:(NSArray*)otherArray

//

- (void)setArray:(NSArray*)otherArray

//

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index

3) 对象的删除

- (void)removeObject:(id)anObject

4) 更改某个位置的对象:

-(void) replaceObjectAtIndex:(NSUInteger) indexwithObject:(id) object

五. 字典

用key-value形式存储数据;

1) 初始化

1. 指定一个键值对初始化NSDictionary

+ (id)dictionaryWithObject:(id)anObject forKey:(id < NSCopying>)aKey

dic= [NSDictionary dictionaryWithObject:@”Inter i5” forKey:@”CPU”];

2. 指定多个键值对初始化NSDictionary,两个数组或多个键值对

+ (id)dictionaryWithObjects:(NSArray*)objects forKeys:(NSArray*)keys

+ (id)dictionaryWithObjectsAndKeys:(id)firstObject ,...

2) 获取字典中键值对的个数

-(NSUInteger) count;

3) 获取所有的key和值

-(NSArray*)allvalues;

-(NSArray*) allkeys;

4) 从key值得到value值

-(id) objectForkey: (id)key

六. NSMutableDictionary

1) 生成空字典

NSDictionary +(id)dictionary;

2) 追加键值对

NSMutableDictionary

-(void)setObject:(id)key forKey: (id)key;

3) 删除键值对

-(void)removeObjectForkey: (id)key;

七. NSSet,NSMutableSet

Set是无序集合,其他跟array和dictionary类似;

1) 向Array,Dictionary,Set中添加元素,会主动持有他的所有权;

2) 删除元素时,会释放其所有权;

八. 快速枚举

for …in语法

for(Type variable in expression){

statements }

数组的快速枚举

for(NSString *element in array){

NSLog(@”%@”,element);

}

字典的快速枚举

for(NSString *key in dictionary){

NSLog(@”english:%@ number:%@”, [dictionaryobjectForKey:key],key);

}

读书人网 >移动开发

热点推荐