1、字符串
//========================================================================
/*字符串*/
NSString *s1 = [NSString stringWithFormat:@"You height is %d weight is %d",168,68];
NSLog(s1);
NSLog(@"The str length is %lu",[s1 length]);
NSString *s2 = @"You Height Is 168 weight is 68";
if([s2 isEqualToString:s1]==YES){
NSLog(@"equal yes");
}else{
NSLog(@"equal no");
}
// 详细比较
NSComparisonResult cr = [s2 compare:s1 options:NSCaseInsensitiveSearch|NSNumericSearch];
if(cr == NSOrderedSame){
NSLog(@"Compare YES");
}else{
NSLog(@"Compare NO");
}
//判断前缀
if([s1 hasPrefix:@"You"]){
NSLog(@"hasPrefix YES");
}else{
NSLog(@"hasPrefix NO");
}
//判断s1中是否含有字符串height
NSRange range = [s1 rangeOfString:@"height"];
if(!(range.location ==NSNotFound)){
NSLog(@"The \"height\" is located in %lu",range.location);
NSLog(@"The \"height\" length is %lu",range.length);
}
//========================================================================
//可变字符串
NSMutableString *ms1 = [NSMutableString stringWithCapacity:100];
[ms1 appendString:@"You height is "];
[ms1 appendFormat:@"%d weight is %d",168,68];
NSLog(@"%@",ms1);
NSRange r = [ms1 rangeOfString:@"weight is 68"];
[ms1 deleteCharactersInRange:r];
NSLog(@"%@",ms1);
[pool release];
return 0;
2、数组
不能存储基本数据类型,如enum struct nil 。 只能存储对象
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three",nil];
int count = [array count];
for(int i=0;i<count;i++){
NSLog(@"%@",[array objectAtIndex:i]);
}
NSString *s = @"iphone,Android,windows7";
array = [s componentsSeparatedByString:@","];
s = [array componentsJoinedByString:@" "];
NSLog(s);
//可变数组
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
[mArray addObject:@"Apple"];
[mArray addObject:@"Google"];
[mArray addObject:@"MicroSoft"];
[mArray removeObjectAtIndex:2];
s = [mArray componentsJoinedByString:@","];
NSLog(s);
//数组的迭代器
NSEnumerator *e = [mArray objectEnumerator];
id obj;
while(obj=[e nextObject]){
NSLog(@"---%@---",obj);
}
for(NSString *ms in mArray){
NSLog(@"===%@===",ms);
}
3、字典(哈希表),与JAVA中的Map类似
//字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Apple", @"A",@"Google",@"G",nil];
NSLog(@"%@",[dic objectForKey:@"A"]);
NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithCapacity:10];
[mDic setObject:@"Apple" forKey:@"A"];
[mDic setObject:@"Google" forKey:@"G"];
[mDic setObject:@"Window7" forKey:@"W"];
[mDic removeObjectForKey:@"w"];
for(id key in mDic){
NSLog(@"%@:%@",key,[mDic objectForKey:key]);
}
NSEnumerator *keyEnum = [mDic keyEnumerator];
id key;
while(key=[keyEnum nextObject]){
NSLog(@"---%@:%@---",key,[mDic objectForKey:key]);
}
4、哈希Set,与JAVA中的HashSet是一致的
#import <Foundation/Foundation.h>
@interface Person : NSObject{
int pid;
NSString *name;
}
-(void) setPid:(int)pid;
-(void) setName:(NSString*) name;
-(id) pid;
-(NSString*) name;
@end
@implementation Person
-(void) setPid:(int)p{
pid = p;
}
-(void) setName:(NSString*) n{
[n retain];
[name release];
name = n;
}
-(id) pid{
return pid;
}
-(NSString*) name{
return name;
}
-(NSUInteger)hash{
return pid+[name hash];
}
-(BOOL)isEqual:(id)p{
if(pid==[p pid] && [name isEqualToString:[p name]]){
return YES;
}else{
return NO;
}
}
-(void) dealloc{
[name release];
[super dealloc];
}
@end
Person *p1 = [[Person alloc] init]; [p1 setPid:1]; [p1 setName:@"Name1"]; Person *p2 = [[Person alloc] init]; [p2 setPid:1]; [p2 setName:@"Name1"]; Person *p3 = [[Person alloc] init]; [p3 setPid:3]; [p3 setName:@"Name3"]; NSSet *set = [NSSet setWithObjects:p1,p2,p3,nil]; NSEnumerator *e = [set objectEnumerator]; Person *p; while (p=[e nextObject]) { NSLog(@"%d",[p pid]); } p1 和 p2实例相同,输出两个person的pid//哈希Set
5、封装类
前面的几个容器类都不能存放基本数据结构、enum、struct、nil 在JAVA中我们知道有封装类,例如:int--Integer boolean--Boolean
Cocoa 使用NSValue作为封装类
NSNumber *n2 = [NSNumber numberWithInt:100]; NSNumber *n3 = [NSNumber numberWithFloat:99.9F]; NSNumber *n4 = [NSNumber numberWithBool:YES]; NSLog(@"%d",[n4 intValue]);NSNumber *n1 = [NSNumber numberWithChar:'A'];
6、日期类型//获取当前时间 NSDate *date = [NSDate date]; //格式化一个字符串为日期 NSCalendarDate *date2 = [NSCalendarDate dateWithString:@"26 Apr 2008" calendarFormat:@"%d %b %Y"]; //当前时间的前一天时间 NSDate *date3 = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
7、数据缓冲区
NSData(NSMutableData)类型来实现缓冲区,类似与Java的字节数组,用于存储二进制的数据类型
NSData *data = [NSData dataWithBytes:cs length:strlen(cs)+1]; NSLog(@"%@",data);const char *cs = "He is very height";