結構體
NSRange/CGRange
- 用來表示一個元素在另一個元素中的范圍,NSRange等價于CGRange
包含兩個屬性:
- NSUInteger location:表示一個元素在另一個元素中的位置
- NSUInteger length:表示該元素的長度
- 若找不到指定的元素,將返回NSNotFound(整型-1)
常用函數
- NSRange NSMakeRange(NSUInteger loc, NSUInteger len)
創建一個NSRange類型的變量,將其兩個屬性初始化為loc和len
并返回創建好的變量 - BOOL NSLocationInRange(NSUInteger loc, NSRange range)
查看某個位置是否在某個范圍內,返回一個BOOL類型數據 - BOOL NSEqualRanges(NSRange range1, NSRange range2)
判斷兩個范圍是否相等,當range1.location = range2.location
且range1.length = range2.length時才相等 - NSString *NSStringFromRange(NSRange range)將一個range
轉換成字符串 - NSRange NSStringFromRange(NSString *string)將一個字符串
轉換成range
NSPoint/CGPoint
- 用來存儲一個點,NSPoint等價于CGPoint
包含兩個屬性:
- CGFloat x:表示該點的橫坐標值
- CGFloat y:表示該點的縱坐標值
常用函數
- NSPoint NSMakePoint(CGFloat x, CGFloat y),用來創建一
個點,并用x與y初始化成員變量 - BOOL NSEqualPoints(NSPoint aPoint, NSPoint bPoint)
判斷aPoint與bPoint是否為同一個點 - BOOL NSPointInRect(NSPoint aPoint, NSRect aRect)判斷點
aPoint是否在矩形aRect中 - NSString *NSStringFromPoint(NSPoint aPoint),將一個點
轉化為字符串 - NSPoint NSPointFromString(NSString *aString),將一個字
符串轉化成一個點
NSSize/CGSize
- 用來存儲一個元素的尺寸,NSSize等價于CGSize
包含兩個屬性:
- CGFloat width:表示該元素的寬度
- CGFloat height:表示該元素的高度
常用函數
- NSSize NSMakeSize(CGFloat w, CGFloat h),用來創建一個
NSSize元素,并用x和y初始化成員變量 - BOOL NSEqualSizes(NSSize aSize, NSSize bSize),判斷尺
寸aSize與尺寸bSize是否相等 - NSString *NSStringFromSize(NSSize aSize),將尺寸元素aSize
轉換成字符串 - NSSize NSSizeFromString(NSString *aString),將字符串轉換
成尺寸元素aSize
NSRect/CGRect
- 用來存儲一個元素左上角的點和該元素的尺寸信息, NSRecta
等價于CGRect 包含兩個屬性:
- CGPoint origin:用來表示該元素左上角的點
- CGSize size:用來表示該元素的尺寸
常用函數
- CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,
CGFloat height),用來創建一個CGRect變量,并用x和y初始化
成員變量origin,用width和height初始化成員變量size - bool CGRectEqualToRect(CGRect rect1, CGRect rect2),
比較兩個rect1與rect2是否相等 - bool CGRectContainsPoint(CGRect rect, CGPoint point),
判斷點point是否在元素rect中 - bool CGRectContainsRect(CGRect rect1, CGRect rect2),
判斷元素rect1是否包含rect2,rect1與rect2不為空,不包括邊界
示例
#import <Foundation/Foundation.h> int main() { @autoreleasepool { BOOL result; //用于存儲函數的返回值 NSString *str; //用于存儲轉化得到的字符串 //創建兩個點對象 NSPoint point = NSMakePoint(5, 8); NSPoint point2 = NSMakePoint(50, 8); //創建兩個尺寸對象 NSSize size = NSMakeSize(10, 20); NSSize size2 = NSMakeSize(10, 20); //創建兩個矩形對象 NSRect rect = NSMakeRect(0, 0, 20, 30); NSRect rect2 = NSMakeRect(0, 1, 20, 30); //判斷point與point2是否相同 result = NSEqualPoints(point, point2); //判斷point是否在某個矩形rect result = NSPointInRect(point, rect); //判斷point2是否在某個矩形rect result = NSPointInRect(point2, rect); //判斷size與size2是否相同 result = NSEqualSizes(size, size2); //判斷rect與rect2是否相同 result = NSEqualRects(rect, rect2); //判斷rect是否包含rect2 result = CGRectContainsRect(rect, rect2); //將point、size、rect轉化成字符串 str = NSStringFromPoint(point); str = NSStringFromSize(size); str = NSStringFromRect(rect); } return 0;}
字符串
NSString
- 是一個OC類,用于操作OC字符 串
- 創建的OC字符串對象是不可變 的
- 通常情況下,一個類方法對應一個完成相同功能的對象方 法
- ,返回不可變字符 串
常用創建字符串的的類方法(通常以類名開頭 )
- + (instancetype)string,創建一個NSString對象
- + (instancetype)stringWithString:(NSString *)string,創建一個NSString對象,并用OC字符串String初始 化
- + (instancetype)stringWithCharacters:(const unichar *)character slength:(NSUInteger)length,通過字符串指針以及一定長度的字符串創建一個NSString對 象
- + (instancetype)stringWithFormat:(NSString *)format ,合成一個字符串
- + (instancetype)stringWithCString:(const char *)cStringencoding:(NSStringEncoding)enc,通過一個C語言字符串創建一個OC字符 串
- + (instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error, 通過統一資源定位符URL創建OC字符 串
- + (instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;通過文件內容創建OC字符串
常用創建字符串的對象方法
- 對象方法與類方法相似,通常以init開頭,這里不在列舉
常用的字符串操作方法
- - (unichar)characterAtIndex:(NSUInteger)index,返回字符串中指定索引位置的字符
- - (void)getCharacters:(unichar *)buffer range:(NSRange), aRange,找到指定位置的字符串,存儲到buffer 中
- - (void)getCharacters:(unichar *)buffer,獲取buffer中的字符串
- - (NSString *)substringWithRange:(NSRange)range,返回某個范圍的子串
- - (NSComparisonResult)compare:(NSString *)string,比較兩個字符串,返回枚舉NSComparisonResult的變量
- - (BOOL)containsString:(NSString *)aString,判斷是否包含字符串aString
- - (NSRange)rangeOfString:(NSString *)aString,返回該字符串中aString的范圍
NSMutableString
- 繼承自NSString,創建可變的字符串對象
NSMutableString擴充的方法
- - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString,用aString替換指定范圍的字符串
- - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc,在索引loc處插入字符串aString
- - (void)deleteCharactersInRange:(NSRange)range,刪除指定范圍的字符串
- - (void)appendString:(NSString *)aString,將aString拼接在該字符串的末尾,擴充字符串
- - (void)appendFormat:(NSString *)format,通過一個和成的子符串format來擴充字符串
- - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile,將字符串寫到以字符串形式表示路徑的文件中
集合
NSNumber與NSValue
NSValue
NSNumber
- 繼承自NSValue,通常用于將普通數據類型如int、char等,轉換為相應的OC對象
常用的初始化類方法
- + (NSNumber *)numberWithChar:(char)value,將char類型轉換成OC對象
- 其他的方法與上述方法類似,只需將char換成其他類型名,如:int,long等
常用的初始化對象方法
- - (NSNumber *)initWithInt:(int)value,將int類型數據轉換為OC對象
- 其他方法與上述方法相似,只需將Int換成相應的數據類型,如char,short等
常用操作NSNumber對象的方法
- - (NSComparisonResult)compare:(NSNumber *)otherNumber比較兩個NSNumber對象,返回枚舉類型
- - (BOOL)isEqualToNumber:(NSNumber *)number,比較兩個NSNumber對象,返回BOOL類型
NSDate
作用
- OC類,用于存儲時間信息
- 可以通過NSDateFormatter指定時間的格式
常用的方法
- - (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti, 創建一個時間對象,用ti初始化,NSTimeInterval本質是long類型
- - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate, 返回自某個時間其到代碼調用所經過的秒數
- - (NSComparisonResult)compare:(NSDate *)other,比較兩個日期,返回枚舉類型
- - (BOOL)isEqualToDate:(NSDate *)otherDate,比較兩個日期是否相等
- /timeIntervalSince1970是一個成員變量,可以通過它調用get方法返回從1970年起經歷的時間(單位為:秒)
- + (instancetype)date,返回當前的0時區時間
示例
#import <Foundation/Foundation.h>int main(){ @autoreleasepool { //定義一個NSDate類型,用于輸出程序執行時的時間 NSDate *date = [NSDate date]; //指定時間的格式 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy年/MM月/dd日/ HH:mm:ss"; //將時間類型轉換為字符串 NSString *time = [formatter stringFromDate:date]; NSLog(@"%@", time); //定義一個范圍,用于指定某個范圍的字符串 NSRange range = NSMakeRange(5, 4); //快速創建一個NSString對象,存儲姓名 NSString *str = @"name:Jack"; //創建一個NSNumber對象,存儲學號 NSNumber *number = [NSNumber numberWithInt:1]; //創建一個不可變數組,存儲多個姓名對象 NSArray *objects = @[str, @"name:Lily", @"name:Lucy"]; //創建一個可變數組,存儲多個學號對象 NSMutableArray *keys = [NSMutableArray arrayWithObjects:number, @2, @3, nil]; //創建一個可變字典,通過數組objects,keys初始化 NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys]; //快速遍歷objects數組 for (id obj in objects) { //找到obj中指定范圍的子串 NSString *name = [obj substringWithRange:range]; NSLog(@"%@", name); } //通過block遍歷字典中的元素 [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ NSLog(@"%@-%@", key, [obj substringWithRange:range]); if ([[obj substringWithRange:range] isEqualTo:@"Jack"]) { //當遍歷到Jack時停止 *stop = YES; } }]; //清除key值為@1的鍵值對 [dictionary removeObjectForKey:@1]; //檢測結果,此時將遍歷字典中所有的元素,不會停止 [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ NSLog(@"%@-%@", key, [obj substringWithRange:range]); if ([[obj substringWithRange:range] isEqualTo:@"Jack"]) { //當遍歷到Jack時停止(字典中無該鍵值對,不會停止) *stop = YES; } }]; } return 0;}