Foundation Framework (1)
- 基本類型
C語言所有的基本數(shù)據(jù)類型在OC里都是合法的
int (有符號跟無符號整型所占位數(shù)是不確定的盛嘿,要看編譯器情況昨寞,所以代碼在不同系統(tǒng)移植會不方便)
double
float
char
…
Foundation Framework
BOOL (YES, NO)
NSInteger
NSUInteger
…
OC里的有符號/無符號整型所占位數(shù)是一樣的
只要涉及整型盡量使用OC里的整型
-
NSString
它是不可變的字符串,一旦字符串對象生成了就不可以改變它瞻惋。
創(chuàng)建字符串對象:
NSString *s = [[NSString alloc] init];
//創(chuàng)建了一個空的字符串對象因為NSString對象是不可以改變的,所以我們生成一個空字符串對象沒太大意義援岩。
因為創(chuàng)建字符串在編程中頻率很高歼狼,所以OC提供了一種更便捷的字面量的語法來創(chuàng)建字符串。
創(chuàng)建一個
hello world!
字符串并輸出:NSString *s = @"hello world!"
;//@
符號表示這是個OC特有的語法NSLog(s);
//NSLog()
函數(shù)可以接受NSString對象作為參數(shù)直接輸出-
如果想知道一個字符串的長度怎么辦享怀?
- 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 (說明第一個字符串比第二個字符串辛鄞) 字符串比較是按照字典序比較的
-
格式化方法創(chuàng)建一個字符串
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
常用的格式化參數(shù)
格式化參數(shù)語法 | 含義 |
---|---|
%@ | 對象 |
%d, %i | 整數(shù) |
%u | 無符號整數(shù) |
%f | 浮點 |
%x,%X | 十六進制數(shù) |
%o | 八進制數(shù) |
%p | 指針 |
要注意%@
坯汤,在OC里,所有對象都繼承的基類NSObject搀愧,它里面有個方法 (NSString*) description
玫霎,這個方法返回的是一個NSString
類型的字符串,它的返回值就是%@
參數(shù)所對的內(nèi)容(傳給%@
的具體值)妈橄。
如果我們要以字符串的形式輸出對象的描述的話庶近,我們就可以在自己創(chuàng)建的類里重新去實現(xiàn)這個description方法。這樣在當我們?nèi)ド筛袷交址臅r候就可以直接用%@
把這個對象的描述字符串抽取出來眷蚓。(也就是把description的返回值(是一個字符串鼻种,它的內(nèi)容是對對象的描述)填到%@
這個格式化參數(shù)去)
-
如何在字符串里完成搜索和替換功能?
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