iOS - Foundation相關

碼鋒窩發表於2017-03-08
1.NSString
        A.建立的方式:
            stringWithFormat:格式化字串  ,建立字串物件在堆區域
            @"jack" :簡化字串建立 ,建立字串物件在常量區。
        B.特點:恆定性:字串一旦被建立在記憶體中,那麼它就無法改變了。
               字串建立的時候會去搜尋記憶體,如果記憶體中有對應的字串,就不會建立新的了。
                字串物件就算沒有一個強指標指向,它也不會被回收。
        C.需要掌握的常用方法:
         1).建立格式字串  stringWithFormat:
         2).使用NSURL讀寫網路上的資源  stringWithContentsOfURL:
         3).字串的比較    isEqualToString:
         4).字串的替換    stringByReplacingOccurrencesOfString:
         5).字串轉換為其他的型別    xxxValue
         6).獲得字串的長度    length
         7).根據符號將字串分割成一個陣列的多個元素,並返回陣列結果
         componentsSeparatedByString
 

 
 2.NSMutableString:
 
        A.特點:字串的內容可以被修改。沒有恆定性的。
        B.建立:NSMutableString *str = [NSMutableString stringWithFormat:@"jack"];
        C.常用的方法:
                    appendString:在字串的後面追加新的字串
                    appendFormat:在字串的後面追加格式字串
    總結:
        大部分情況下,用NSString來儲存字串。
        什麼時候應用它:如果要做大批量的字串拼接,就使用NSMutableString
 

 
 3.NSArray
        A.建立:[NSArray arrayWithObject:]:建立帶有一個元素的OC陣列
               [NSArray arrayWithObjects:](記得最後加上nil):建立帶有多個元素的OC陣列
                                        NSArray *days = [NSArray arrayWithObjects:@"SUN", @"MON",@"TUE",@"WED",@"THU",@"FRI",@"SAT", nil];
                                等價於:  NSArray *days = @[@"SUN","MON","TUE","WED","THU","FRI","SAT"];
              @[@"jack",@"rose"]:建立一個NSArray陣列的簡要建立方式。
 
        C.常用方法: 
                 
[array count] : 得到這個陣列物件的長度。
[arrayobjectAtIndexindex]: 傳入陣列的索引(index) 得到資料物件。
[arrayWithObjects: ...] :向陣列物件初始化賦值。這裡可以寫任意物件的指標,結尾必須使用 nil,以標誌結束.
+(id)arrayWithObjects:obj1,obj2,...nil 建立一個新的陣列,obj1,obj2......是他的元素物件,以 nil 物件結尾
-(BOOL)containsObject:obj 確定陣列中是否包含物件 obj
-(NSUInteger)count 返回陣列元素個數
-(NSUInteger)indexOfObject:obj 第一個包含 obj 元素的索引號
-(id)objectAtIndex;i 返回儲存在位置 i 的物件
-(void)makeObjectsPerformSelector:(SEL)selector selector 只是的訊息傳送給陣列中的每個元素
-(NSArray*)sortedArrayUsingSelector:(SEL)selector 根據 selector 指示的比較方法對陣列進行排序,比如: NSArray * array = @[@"b",@"d",@"a",@"z"];
 
array = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"排序後 array%@",array);
 
   
            3.使用block來遍歷集合。
             [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
             //obj:正在遍歷的元素
             //idx:正在遍歷的元素的下標
             //stop:設定遍歷終止的BOOL指標  ,賦值形式  *stop=YES;
             }];
 

4.NSMutableArray
 
(陣列實際上是分配長度不可變的地址的,NSMutableArray之所以能變長度,實際上是內部重新分配了一個空間,將原來的陣列複製過來,使用新分配的這個,內部把這個過程封裝好了而已,所以實際上它也是長度不可變的)
            建立方式:NSMutableArray *arr = [NSMutableArray arrayWithObjects:];
                    NSMutableArray *arr = [NSMutableArray new];
                  //因為此陣列是可變得,所以可以建立一個空陣列再賦值。
            常用方法:
array 建立一個空陣列
+(id)arrayWithCapacity:size 建立一個陣列,指定容量為 size
-(id)initWithCapacity:size 初始化一個新分配的陣列,指定容量為 size
-(void)addObject:obj 將物件 obj 新增到陣列末尾
-(void)insertObject:objatIndex:i 將物件 obj 插入到索引為 i 的位置
-(void)replaceObject:obj atIndex:i 將陣列中索引為 i 處的元素用 obj 置換
-(void)removeObject:obj 從陣列中刪除所有是 obj 的物件
-(void)removeObjectAtIndex:i 從陣列中刪除索引為 i 的對像
-(void)sortUsingSelector:(SEL)selector selector 只是的比較方法將陣列排序
 

 
NSSet
(1)都是儲存不同的物件的地址
(2)NSArray 是有序的集合,NSSet 是無序的集合。 (3)集合是一種雜湊表,運用雜湊演算法,查詢集合中的元素比陣列速度更快,但是它沒有順序。
     建立
 
          NSSet * set2 = [[NSSet alloc] initWithObjects: @"one",@"two",@"three",@"four", nil];
 
(1)返回集合中物件的個數
 
[set count];
 
(2)判斷集合中是否擁有某個元素 判斷集合中是否擁有@”two”:
 
BOOL ret = [set containsObject:@"two"];
 
NSSet * set= [[NSSet alloc] initWithObjects:
 
@"one",@"two",@"three",@"four", nil];
 
(3)判斷兩個集合是否相等
 
BOOL ret = [set isEqualToSet:set2];
 
(4)判斷 set 是否是 set2 的子集合
 
BOOL ret = [set isSubsetOfSet:set2];
 
(5)集合也可以用列舉器來遍歷
NSEnumerator * enumerator = [set objectEnumerator]; NSString *str;
while(str =[enumerator nextObject])
{ ..... }
 
(6)陣列轉換為集合
NSArray * array = [[NSArray alloc] initWithObjects: @"one",@"two",@"three",@"four", nil];
NSSet * set= [[NSSet alloc] initWithArray:array];
 
(7)集合轉換為陣列
NSArray * array2 = [set allObjects];
 

NSDictionary
 
字典初始化:
 
(1)以一個元素初始化
 
NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];
 
(2)初始化兩個元素
 
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: numObj, @"valueKey", numObj2, @"value2",nil];
(3)初始化新字典,新字典包含 otherDic
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];
(4)以檔案內容初始化字典
 
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
 
(5)也可建立多維字典 使用快速建立的方式:
 
NSArray *persons = @[
@{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5 分鐘突破 iOS 程式設計", @"5 分鐘
 
突破 android 程式設計"]},
@{@"name" : @"rose", @"qq" : @"767567"}, @{@"name" : @"jim", @"qq" : @"423423"}, @{@"name" : @"jake", @"qq" : @"123123213"} ];
 
常用方法:
(2)通過 key 獲取對應的 value 物件 NSObject *valueObj = [dic objectForKey:@"key"];
(3)將字典的 key 轉成列舉物件,用於遍歷 NSEnumerator *enumerator = [dic keyEnumerator];
(4)獲取所有鍵的集合 NSArray *keys = [dic allKeys];
(5)獲取所有值的集合 NSArray *values = [dic allValues];

NSMutableDictionary
 
(1)初始化一個空的可變字典
NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObject: @"v3" forKey:@"key3"];
(2)向字典 2 物件中新增整個字典物件 3
[dic2 addEntriesFromDictionary:dic3];
 
(3)向字典 2 物件中最佳一個新的 key3 value3
[dic2 setValue:@"value3" forKey:@"key3"];
 
(4)初始化一個空的可變字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
 
(5)將空字典 1 物件內容設定與字典 2 物件相同
[dic1 setDictionary:dic2];
 
(6)將字典中 key1 對應的值刪除
[dic1 removeObjectForKey@"key1"];
NSArray *array = [NSArray arrayWithObjects:@"key1", nil];
(7)根據指定的陣列(key)移除字典 1 的內容
[dic2 removeObjectsForKeys:array];
(8)移除字典所有物件
[dic1 removeAllObjects];
 

int型的10 變成NSNumber物件

NSNumber *num = [NSNumber numberWithInt: 10];
NSNumber *num = @10;
 

NSFileManager

建立一個檔案並寫入內容,比如在桌面上建立一個檔案 lff.txt,並寫入內容:My name is LFF:

 
NSString *str = @”My name is LFF”;
 
NSError *error;
 
BOOL isWritSuccess = [str writeToFile:@”/User/LFF/Desktop/lff.txt” atomically:YES encoding:NSUTF8StringEncoding error:&error];
 
if (isWritSuccess) {
 
NSLog(@”建立成功”); }else
 
{
NSLog(@”error %@”,error);
 
}
 
(1)獲得目標目錄下,第一級目錄
NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/Myfile";
NSError * error;
 
NSArray * array =
[fileManager contentsOfDirectoryAtPath:path error:&error];
 
NSLog(@"array %@",array);

(2)逐級獲得所有子集的目錄

 
NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/other";
NSError * error;
 
NSArray * array =
[fileManager subpathsOfDirectoryAtPath:path error:&error];
 
NSLog(@"array %@",array);
 

(3)刪除

NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/aplle/Desktop/newmyfolder"; NSError * error;
BOOL isRemoveSuccess =

[fileManager removeItemAtPath:path error:&error]; if (isRemoveSuccess)

{
NSLog(@"刪除成功");

} else {

 
NSLog(@"erro %@",error); }

相關文章