使用XCode的提示功能,只需要记住类的名字及常用的函数就好了,其他的函数可以根据提示来查看,按ESC键可以查看该类的函数
Foundtion框架
Cocoa程序的编写主要要用到两个框架,Foundation和ApplicationKit(UIKit),其中Foundation框架主要定义了一些基础类,而ApplicationKit主要定义了一些用于Mac开发的几面基础类,而IOS的界面开发主要是用UIKit。Foundation框架中的所有类都继承自NSObject,这就是所谓的上帝吧。Foundation主要提供了与图形用户界面没有直接关系的功能的一些类,比如:字符串、数值、容器集合等等相关的类。
1、有关数字对象的处理
把数字包装成数字对象
int age = 24;
BOOL isMarry = NO;
float pi = 3.14f;
//使用类方法,其他的基本数据类型和如下两种方式相同
NSNumber *myAge = [NSNumber numberWithInt:age];
NSNumber *aboutMarry = [NSNumber numberWithBool:isMarry];
//使用初始化方法
NSNumber *aboutPi = [[NSNumber alloc]initWithFloat:pi];
把数字对象再转换成基本数据类型
age = [myAge intValue];
isMarry = [aboutMarry boolValue];
pi = [aboutPi floatValue];
2、字符串的常见应用
由于oc是基于c的,为了区别起见,oc中的字符串必须以@开头,@后引号内的类容为字符串本身内容
NSString对象一旦创建就不能再修改,如果想创建一个可以修改的字符串对象,则使用NSMutableString,这里的NSS他ring好比java中的String类,而NSMutableString类好比java中StringBuffer
//创建一个字符串 //方法一 NSString *name = @"Jim Green"; //方法二 //创建一个空字符串 NSString *name1 = [[NSString alloc]init];//实例方法 //创建非空字符串 NSString *name3 = [[NSString alloc]initWithString:@"Jim Green"]; //有关创建格式化符字符串 NSString *myself = [[NSString alloc]initWithFormat:@"我是%@,今年%d岁,知道PI的值是%f",name3,age,pi];
有关字符串的比较:
//以下打印结果为相等
NSString *str1 = @"niao";
NSString *str2 = @"niao";
if (str1 == str2) {
NSLog(@"相等");
}else
NSLog(@"不相等");
if ([str1 isEqualToString: str2]) {
NSLog(@"相等");
}else
NSLog(@"不相等");
//此处的打印结果也相等(在常量区创建)
NSString *str3 = [[NSString alloc]initWithString:@"ge"];
NSString *str4 = [[NSString alloc]initWithString:@"ge"];
if (str3 == str4) {
NSLog(@"相等");
}else
NSLog(@"不相等");
//此处打印也相等
if ([str3 isEqualToString: str4]) {
NSLog(@"相等");
}else
NSLog(@"不相等");
//********************************************************分界线
//在堆区创建 NSString *str5 = [NSString stringWithFormat:@"ni%d",5]; NSString *str6 = [NSString stringWithFormat:@"ni%d",5]; //此处打印不相等 if (str5 == str6) { NSLog(@"5相等6"); }else NSLog(@"5不相等6"); //此处打印也相等 if ([str5 isEqualToString: str6]) { NSLog(@"5相等6"); }else NSLog(@"5不相等6");
分界线以上的无论是==还是isEqualToString都是相等,分界线以下的==打印不相等,isEqualToString打印的是相等,这里用isEqualToString比较相等很容易理解,关于用等号比较
那是因为用==比较的是对象指针的地址,而不是对象本身
而分界线以上的对象都是在敞亮区创建的,所以用==比较是相等的
而分解先以下的是在堆区创建的,所以用==比较是不相等的
str5与str6是在堆区创建了两个对象,所以对象的地址是不同的所以用==比较不同,而对象的内容是相同的,所以isEqualToString比较相同。
比较字符串的大小
NSString *str7 = @"a";
NSString *str8 = @"b";
NSString * str9 = @"A";
NSLog(@"比较结果为:%@",[str7 compare:str8]?@"YES":@"NO");//比较结果为:YES
//忽略大小写
NSLog(@"忽略大小写1,%ld",[str7 caseInsensitiveCompare:str8]);//忽略大小写1,-1
NSLog(@"忽略大小写2,%ld",[str9 caseInsensitiveCompare:str7]);//忽略大小写2,0