一 數字 1.使用Foundation.h可以直接導入所有的頭文件。 在XCode中,想查看某個方法幫助,可以將游標放在方法上,按住option鍵同時單擊即可。 官方文檔:https://developer.apple.com/library/mac/navigation/ 2.數字對象 objec ...
一 數字
1.使用Foundation.h可以直接導入所有的頭文件。 在XCode中,想查看某個方法幫助,可以將游標放在方法上,按住option鍵同時單擊即可。 官方文檔:https://developer.apple.com/library/mac/navigation/ 2.數字對象 objective-c有幾種基本數據類型,int float long等,不過有些時候比如NSArray需要使用數字對象,而前面幾種基本數據類型並不是對象,此時我們可以使用NSNumber. 對於每種基本數據類型,類方法都可以為它創建一個NSNumber對象,並設定值。這些方法都是以numberWith開頭,如numberWithInteger等。也可以使用實例方法將以前創建的NSNuber對象設置為指定的值,這些方法是以initWith開頭,如initWithFloat。 NSNumber類有很多方法,幾種常見用法如下:- numberWith…:用初始值創建NSNumber對象,例如:numberWithInt:100;
- integerValue:獲取NSNumber對象的值,其它如charValue,floatValue等;
- isEqualToNumber:比較兩個NSNumber對象的數值是否相等,返回一個BOOL值。
- compare:比較兩個NSNumber對象數值的大小。返回結果有NSOrderedAscending,NSOrderedSame和NSOrderedDescending。
- 最近objective-c語言擴展允許通過@表達式創建數字對象。如果@之後的值是一個表達式或者變數需要使用括弧。
#import <Foundation/Foundation.h> int main(int argc,const char * argv[]) { @autoreleasepool { NSNumber *myNumber,*floatNumber,*intNumber; intNumber=[NSNumber numberWithInt:100]; NSLog(@"%li",[intNumber integerValue]);//100 floatNumber=[NSNumber numberWithFloat:100.00]; NSLog(@"%f",[floatNumber floatValue]);//100.000000 myNumber=[NSNumber numberWithChar:'A']; NSLog(@"%c",[myNumber charValue]);//A //判斷兩個數字是否相等 if([intNumber isEqualToNumber:floatNumber]==YES) { NSLog(@"int number is equal to float number");//√ } else{ NSLog(@"int number is not equal to float number"); } //比較兩個數字大小 if([intNumber compare:myNumber]==NSOrderedAscending) { NSLog(@"int number is less than mynumber"); } else{ NSLog(@"int number is more than mynumber");//√ } //@語法 intNumber=@200; NSLog(@"%li",[intNumber integerValue]);//200 } return 0; }
二 字元串
1.常量字元串對象 在字元串開頭放一個@符號,就可以創建一個字元串常量對象。例如:@"Hello World!" 2.decription NSLog(@"%@",a)中,%@既可以顯示NSString對象,也可以顯示其它對象。通過覆蓋description方法,可以自定義對象的顯示格式。 Complex.h#import <Foundation/Foundation.h> @interface Complex : NSObject @property int real,imaginary; -(void)setReal:(int)r andImaginary:(int)m; @end
Complex.m
#import "Complex.h" @implementation Complex @synthesize real,imaginary; -(void)setReal:(int)r andImaginary:(int)m { self.real=r; self.imaginary=m; } //重寫description,自定義輸出格式 -(NSString *)description { return [NSString stringWithFormat:@"%i + %ii",self.real,self.imaginary]; } @endmain.m
#import <Foundation/Foundation.h> #import "Complex15.h" int main(int argc,const char * argv[]) { @autoreleasepool { Complex15 *c=[[Complex15 alloc] init]; [c setReal:1 andImaginary:2]; NSLog(@"%@",c);//由<Complex15: 0x10010ffa0> 變為 1 + 2i } return 0; }
2.不可變字元串NSString 註意:不可變字元串對象表明它所引用的字元串對象的字元不可改變,但是可以重新為它們指定為其它的不可變字元串對象。 NSString常用的方法:
- length:獲取字元串長度;
- NSString stringWithString:複製字元串內容;
- stringByAppendingString:連接兩個字元串;
- isEqualToString:比較兩個字元串是否相等;
- compare:字元串比較,常用於排序。比較結果為NSOrderedAssending,NSOrderedSame或NSOrderedDescending。
- uppercaseString:字元串轉換為大寫;
- lowercaseString:字元串轉換為小寫。
int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1=@"This is String A"; NSString *str2=@"This is String B"; NSString *result; NSComparisonResult compareResult; // 字元串長度 NSLog(@"length of str1 is %lu",[str1 length]);//length of str1 is 16 //複製字元串 result=[NSString stringWithString:str1]; NSLog(@"Copy str1,result is: %@",result);//Copy str1,result is: This is String A //追加字元串 str2=[str1 stringByAppendingString:str2]; NSLog(@"str1 append str2 is:%@",str2);//str1 append str2 is:This is String AThis is String B //字元串是否相等 if([str1 isEqualToString:result]){ NSLog(@"str1==result");//√ } else{ NSLog(@"str!=str2"); } //比較字元串 compareResult=[str1 compare:str2]; if(compareResult==NSOrderedAscending){ NSLog(@"str1<str2");//√ }else if(compareResult==NSOrderedSame){ NSLog(@"str1=str2"); }else{ NSLog(@"str1>str2"); } //大小寫轉換 result=[str1 uppercaseString]; NSLog(@"upper case:%@",result);//upper case:THIS IS STRING A result=[str1 lowercaseString]; NSLog(@"lower case:%@",result);//lower case:this is string a } return 0; }
子字元串操作:
- substringToIndex:返回一個子串,截取從開頭到指定索引數的字元,但是不包括這個字元。
- substringFromIndex:返回一個子串,截取從指定位置到字元串結尾的字元。
- substringWithRange:返回指定範圍的字元,參數是NSRange類型。
- rangeOfString:在字元串中查找子串,返回結果是NSRange類型,它是一個結構變數,不是對象變數。返回結果range.location表示子串起始位置,range.length表示子串長度。如果找不到指定子串,則location為NSNotFound。
int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1=@"This is String A"; NSString *result; NSRange range; //從開頭取前N個字元 result=[str1 substringToIndex:4]; NSLog(@"前4個字元:%@",result);//前4個字元:This //取第N個字元到結尾 result=[str1 substringFromIndex:8]; NSLog(@"後8個字元:%@",result);//後8個字元:String A //提取第8到13個字元 result=[[str1 substringFromIndex:8] substringToIndex:6]; NSLog(@"第8到13個字元:%@",result);//第8到13個字元:String //另一種實現方式 result=[str1 substringWithRange:NSMakeRange(8,6)]; NSLog(@"第8到13個字元:%@",result);//第8到13個字元:String //查找子串 range=[str1 rangeOfString:@"String"]; NSLog(@"String子串位置%lu,長度是%lu",range.location,range.length);//String子串位置8,長度是6 //查找不存在的子串 range=[str1 rangeOfString:@"StringA"]; if(range.location==NSNotFound){ NSLog(@"未找到子串StringA");//√ }else{ NSLog(@"子串StringA位置為%lu",range.location); } } }
3.可變字元串NSMutableString NSMutalbleString是NSString的子類,用來創建可以更改字元的字元串對象。 NSMutableString常用方法: insertString:atIndex :在指定位置插入字元串; appendString: 在字元串結尾插入字元串; deleteCharactersInRange:刪除字元串中指定數目的字元。 setString:直接設置可變字元串對象的內容;
int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str=@"This is String A"; NSMutableString *mstr; NSRange substr; mstr=[NSMutableString stringWithString:str]; NSLog(@"%@",mstr);//This is String A //插入字元 [mstr insertString:@" mutable" atIndex:7]; NSLog(@"%@",mstr);//This is mutable String A //追加字元 [mstr appendString:@" and String B"]; NSLog(@"%@",mstr);//This is mutable String A and String B //刪除子串 [mstr deleteCharactersInRange:NSMakeRange(16, 8)]; NSLog(@"%@",mstr);//This is mutable and String B //查找子串並刪除 substr=[mstr rangeOfString:@"and String B"]; if(substr.location!=NSNotFound){ [mstr deleteCharactersInRange:substr]; NSLog(@"%@",mstr);//This is mutable } //直接設置可變字元串內容 [mstr setString:@"This is String."]; NSLog(@"%@",mstr);//This is String. //替換子串 [mstr replaceCharactersInRange:NSMakeRange(7, 1) withString:@" mutable "]; NSLog(@"%@",mstr);//This is mutable String.