Foundation Framework (1)
- 基本类型
C语言所有的基本数据类型在OC里都是合法的
int (有符号跟无符号整型所占位数是不确定的,要看编译器情况,所以代码在不同系统移植会不方便)
double
float
char
…
Foundation Framework
BOOL (YES, NO)
NSInteger
NSUInteger
…
OC里的有符号/无符号整型所占位数是一样的
只要涉及整型尽量使用OC里的整型
-
NSString
它是不可变的字符串,一旦字符串对象生成了就不可以改变它。
创建字符串对象:
NSString *s = [[NSString alloc] init];
//创建了一个空的字符串对象因为NSString对象是不可以改变的,所以我们生成一个空字符串对象没太大意义。
因为创建字符串在编程中频率很高,所以OC提供了一种更便捷的字面量的语法来创建字符串。
创建一个
hello world!
字符串并输出:NSString *s = @"hello world!"
;//@
符号表示这是个OC特有的语法NSLog(s);
//NSLog()
函数可以接受NSString对象作为参数直接输出-
如果想知道一个字符串的长度怎么办?
- NSInteger length = [ s length];
-
如何比较两个字符串是否相同?
int main (int argc, const char *argv[]) { @autoreleasepool { NSString *string1 = @"this is string1"; NSString *string2 = @"this is string2"; BOOL result = [string1 isEqualToString:string2]; if (result) { NSLog (@"Equal!"); } else { NSLog (@"Not Equal!"); } } return 0; } 输出结果:Not Equal!
-
比较字符串大小的方法
int main (int argc, const char *argv[]) { @autoreleasepool { NSString *string1 = @"This is string1"; NSString *string2 = @"This is string2"; NSComparisonResult result = [string compare:string2]; NSLog(@"result:%d", result); } return 0; } NSComparisonResult是枚举类型,一共三种取值,-1(小于),0(等于),1(大于) 输出结果:-1 (说明第一个字符串比第二个字符串小) 字符串比较是按照字典序比较的
-
格式化方法创建一个字符串
int main (int argc, const char *argv[]) { @autoreleasepool { NSString *s = [NSString stringWithFormat:@"This is a format string: an int %d and string: %@", 99, @"str"); NSLog(s); } return 0; } 输出结果:This is a format string: an int 99 and string: str
常用的格式化参数
格式化参数语法 | 含义 |
---|---|
%@ | 对象 |
%d, %i | 整数 |
%u | 无符号整数 |
%f | 浮点 |
%x,%X | 十六进制数 |
%o | 八进制数 |
%p | 指针 |
要注意%@
,在OC里,所有对象都继承的基类NSObject,它里面有个方法 (NSString*) description
,这个方法返回的是一个NSString
类型的字符串,它的返回值就是%@
参数所对的内容(传给%@
的具体值)。
如果我们要以字符串的形式输出对象的描述的话,我们就可以在自己创建的类里重新去实现这个description方法。这样在当我们去生成格式化字符串的时候就可以直接用%@
把这个对象的描述字符串抽取出来。(也就是把description的返回值(是一个字符串,它的内容是对对象的描述)填到%@
这个格式化参数去)
-
如何在字符串里完成搜索和替换功能?
int main (int argc,const char *argv[]) { @autoreleasepool { NSString *string = @"This is a long string"; NSString *substring = @"long"; NSRange range = [string rangeOfString:substring]; NSLog(@"location: %d, length: %d", range.location, range.length); NSString *str = [string stringByReplacingOccurrencesOfString:@"long" withString:@"short"short]; NSLog(@"str: %@", str); } return 0; } //NSRange 是一个结构体类型,它含有两个成员变量,一个是location(表示子串开头所在母串的位置),length表示子串的长度。 //输出结果:location: 10, length: 4 //因为NSString类型的字符串是不可变的,所以我们可以通过替换子串的办法生成新的字符串。 //输出结果:This is a short string