NSString 是 Objective-C 中處理字串的資料類型,雖然我們可以用 C 的字串,但因方便性等因素,我們通常用 NSString ,與 C 字串不同的是,它不是一個陣列,而是一個類別,由 ”@“ 開頭,而在輸出時,我們用 ﹪@ 來表示NSString。


NSString 是一個類別,所以我們最常用 stringWithFormat: 來生成它,例如


  NSString *theString=[NSString stringWithFormat:@"Hello"];
  NSLog(@"%@",theString); 


如果像這樣只是單純的文字,XCode 提供了一個簡便的方法,就是 【@”字串“】來生成,所以上面的程式,我們也可以寫成像這樣:

  NSString *theString=@"Hello";
  NSLog(@"%@",theString); 


其實 Cocoa 程式庫中,有非常多的 method 用來分割,取出,計算長度等,但 NSString 是一個【不可變】的資料類型,什麼是不可變呢?就是設定時,必需一次設好,不能附加或修改,只能重新指定,如上例中如果我們要再把字串加成  Hello World,那就必需要這樣寫

  NSString *theString=@"Hello";
  theString=[NSString stringWithFormat:@"%@%@",theString,@" World!"];
  NSLog(@"%@",theString);

 這在處理簡單的加入還好,但如果要處理比較大的字串,如頁面資料時,就不是很方便了,此時,我們就要使用 NSMutableString 了。

NSMutableString 是 NSString 的子類,所以繼承了 NSString 的所有特性,並增加了一些可變值的特性,如附加字串,但它仍然不是NSString 所以指接指定字串是前面加上(NSMutableString *)來轉型。如果上面的程式改用NSString 來寫,就可以寫成這樣


        NSMutableString *theString=(NSMutableString *)@"Hello";

        [theString appendFormat:@" World"];

        NSLog(@"%@",theString);
 

 那何時使用 NSString 又何時使用 NSMutableString 呢?原則上 Cocoa touch 程式庫中,很多的大多數的回應都是 NSString ,一般用來也沒什麼大問題,所以在遇到必需個別處理字元時,再轉換就可以了。

你也可以參考在 Category
這個 Demo 中,使用 NSMutiableString 的原因與實例。

, , , , , , , , , , , ,
創作者介紹

X Code Objective-C Swift 學習記錄 for iOS & macOS (OS X)

shenfive 發表在 痞客邦 PIXNET 留言(0) 人氣()