Foundation框架介绍
框架是由许多类、方法、函数以及文档按照一定的规则组织起来的集合,以便开发者更方便、迅速的开发程序。
Cocoa程序编写主要用到2个框架Foundation和UIKit.
Foundation框架主要定义了一些基础的类,如数字对象NSNumber,字符串对象NSString等供开发者来使用。 Foundation框架的类都继承NSObject.
UIKit主要是一些用户界面设计的类,如UILabel\UIButton等。
NSNumber数字对象:
C语言中的数据类型,不能调用对象的方法,如有时候需要把数据类型放进数组里面,就要把基本数据类型转成数字对象(Cocoa中数组只能存放对象,不能存放基本数据类型),OC中提供了数字对象NSNumber可以将基本数据类型包装成对象。
// NSNumber 数字对象的初始化
int number = 10;
NSNumber *intNumber = [NSNumbernumberWithInt:number];
NSLog(@"%@", intNumber);
BOOL isBool = YES;
NSNumber *boolNumber = [NSNumbernumberWithBool:isBool];
NSLog(@"%@", boolNumber);
float floatNum = 3.14;
NSNumber *floatNumber = [NSNumbernumberWithFloat:floatNum];
NSLog(@"%@", floatNumber);
double doubleNum = 3.1345;
NSNumber *doubleNumber = [NSNumbernumberWithDouble:doubleNum];
NSLog(@"%@", doubleNumber);
NSInteger inter = 12;
NSNumber *integerNum = [NSNumbernumberWithInteger:inter];
NSLog(@"%@", integerNum);
char c = 'A';
NSNumber *charNumber = [NSNumbernumberWithChar:c];
NSLog(@"%@", charNumber);
//数字对象还原成基本数据类型
int aNumber = [intNumber intValue];
NSLog(@"%d", aNumber);
BOOL aBool = [boolNumber boolValue];
NSLog(@"%d", aBool);
float aFloat = [floatNumber floatValue];
NSLog(@"%f", aFloat);
double aDouble = [doubleNumber doubleValue];
NSLog(@"%f", aDouble);
NSInteger aInter = [integerNum integerValue];
NSLog(@"%ld", aInter);
char aChar = [charNumber charValue];
NSLog(@"%c", aChar);
//比较两个数字对象大小
//(1)判断两个数字对象是否相等
NSNumber *num1 = [NSNumbernumberWithInt:10];
NSNumber *num2 = [NSNumbernumberWithInt:12];
if ([num1 isEqualToNumber:num2])
{
NSLog(@"两个数字对象相等");
}
//(2)判断两个数字对象的大小
int result = [num1 compare:num2];
if (result > 0)
{
NSLog(@"%@大于%@", num1, num2);
}
else if (result < 0)
{
NSLog(@"%@小于%@", num1, num2);
}
else
{
NSLog(@"%@等于%@", num1, num2);
}
在 Foundation框架中,提供了NSString类,用于处理字符串对象。在c语言中字符串用一对引号“”表示,OC是建立在c语言之上的(c基础之上添加了面向对象的内容)。
所以,为了区别,OC语言字符串以@“”表示,如@“hello,word”。
//字符串的创建
//创建一个字符串常量
NSString *string = @"hello,字符串常量";
NSLog(@"%@", string);
//创建一个空的字符串
NSString *string2 = [[NSStringalloc] init];
NSLog(@"%@", string2);
//或者
NSString *string3 = [NSStringstring];
NSLog(@"%@", string3);
//快速创建一个字符串
NSString *string4 = [[NSStringalloc] initWithString:@"hello,string"];
NSLog(@"%@", string4);
//快速创建一个格式化字符串
int number1 = 2;
NSString *string6 = [[NSStringalloc] initWithFormat:@"%d", number1];
NSLog(@"%@", string6);
float number2 = 2.4;
NSString *string7 = [NSStringstringWithFormat:@"%f", number2];
NSLog(@"%@", string7);
//比较字符串
//测试字符串内容是否相同
NSString *str1 = [[NSString alloc] initWithFormat:@"test"];
NSString *str2 = [[NSString alloc] initWithFormat:@"test"];
if ([str1 isEqualToString:str2])
{
NSLog(@"字符串相等");
}
//测试字符串是否为同一个对象
NSString *str3= [[NSString alloc] initWithFormat:@"test"];
NSString *str4 = [[NSString alloc] initWithFormat:@"test"];
if (str3 != str4)
{
NSLog(@"两个字符串不是同⼀个对象");
}
//比较字符串的大小
NSString *str5 = [[NSString alloc] initWithFormat:@"a"];
NSString *str6= [[NSString alloc] initWithFormat:@"b"];
int result = [str5 compare:str6];
if (result > 0)
{
NSLog(@"%@ 大于 %@", str5, str6);
}
else if (result < 0)
{
NSLog(@"%@ 小于 %@", str5, str6);
}
else
{
NSLog(@"%@ 等于 %@", str5, str6);
}
//求字符串的长度
NSString *myString = [[NSString alloc] initWithFormat:@"string length"];
int length = [myString length];
NSLog(@"字符串%@的长度是%d", myString, length);
//字符串转换
NSString *hello = @"hello WORLD";
NSLog(@"%@", [hello uppercaseString]); // 全部大写
NSLog(@"%@", [hello lowercaseString]); // 全部小写
NSLog(@"%@", [hello capitalizedString]); // ⾸字⺟大写,其他字母小写
//将字符串转换成基本数据类型
NSString *str = @"1";
NSLog(@"%d", [str boolValue]); // 转换成BOOL类型
NSString *str2 = @"6";
NSLog(@"%d", [str2 intValue]); // 转换成整型
NSString *str3 = @"2.467";
NSLog(@"%f, %f", [str3 floatValue],[str3 doubleValue]);// 转换成浮点型
//将字符串转换为数组
NSString *str9 = @"One Two Three Four";
NSArray *array = [str9 componentsSeparatedByString:@" "];
NSLog(@"%@", array);
int count = [array count]; //数组的总个数
for (int i = 0; i < count; i++)
{
NSString *str = array[i];
NSLog(@"%@", str);
}
//字符串是否包含前缀或后缀
NSString *targetStr = @"hello, friends! welcom to china";
if ([targetStr hasPrefix:@"hello"])//是否包含前缀
{
NSLog(@"字符串%@包含前缀%@", targetStr, @"hello");
}
if ([targetStr hasSuffix:@"china"])//是否包含后缀
{
NSLog(@"字符串%@包含后缀%@", targetStr, @"china");
}
//获取字符串的指定字符
char c = [targetStr characterAtIndex:0];
char d = [targetStr characterAtIndex:4];
char e = [targetStr characterAtIndex:targetStr.length-1];
NSLog(@"%c--%c--%c", c, d, e);
//字符串编码转换
NSString *str22 = @"hello, world";
constchar *s = [str22 UTF8String];//字符串转码成UTF8String格式,const表示字符串常量
for (int i = 0; *(s+i) != '\0'; i++)
{
printf("%c ", *(s+i));
}
printf("\n");
NSString *newStr = [[NSString alloc] initWithUTF8String:s];//初始化一个UTF8String格式的字符串
//或者
newStr = [NSString stringWithUTF8String:s];
NSLog(@"%@", newStr);
//字符串的截取与拼接
//截取字符串
NSString *str10 = [NSString stringWithFormat:@"abcdef"];
NSString *str11 = [str10 substringToIndex:2];// 从开始位置(包括开始位置的字符)截取长度为2的字符串
NSString *str12 = [str10 substringFromIndex:2];//截取所索2(包括所索2对应的字符)以后的所有字符串
NSLog(@"str10=%@, str11=%@", str11, str12);
//根据范围截取字符串
NSRange rang; // NSRange rang = NSMakeRange(3, 2);
rang.location = 3;
rang.length = 2;
NSString *str13 = [str10 substringWithRange:rang];
NSLog(@"str13=%@", str13);
//拼接字符串对象
NSString *str1 = @"1", *str2 = @"2";
NSString *str33 = [[NSString alloc] initWithFormat:@"%@%@", str1, str2];
NSLog(@"%@", str33);
NSString *str3 = [str1 stringByAppendingFormat:@"%@", str2];
NSLog(@"%@", str3);
NSString *str4 = [str1 stringByAppendingString:str2];
NSLog(@"%@", str4);
/查询字符串对象
NSString *link = @"hello,yida hulian";
NSRange range = [link rangeOfString:@"Yida"];
if(range.location != NSNotFound)//NSNotFound表示无限大
{
NSLog(@"找到了!位置在%ld,子串长度为%ld", range.location, range.length);
}
else
{
NSLog(@"没找到!");
}
//可变字符串对象
//添加字符串
NSMutableString *str55 = [NSMutableString stringWithString:@"字符串"];
[str55 appendString:@"可变"];
[str55 appendFormat:@"flag=%d", 100];
NSLog(@"%@", str55);
//插入字符串
NSMutableString *str5 = [NSMutableString stringWithString:@"字符串"];
[str5 insertString:@"可变" atIndex:0];
[str5 insertString:@"akgo" atIndex:str5.length];
NSLog(@"%@", str5);
//删除字符串
NSMutableString *str6 = [NSMutableString stringWithString:@"字符符串"];
[str6 deleteCharactersInRange:NSMakeRange(1, 2)];
NSLog(@"str6=%@", str6);
//替换字符串
NSMutableString *str7 = [NSMutableString stringWithString:@"字符串"];
[str7 replaceCharactersInRange:NSMakeRange(0, 2) withString:@"msn"];
NSLog(@"str7=%@", str7);