當前位置:成語大全網 - 書法字典 - NSString和SwiftString的區別和使用場景

NSString和SwiftString的區別和使用場景

首先說壹下* * *,也就是String保留了大部分NSString的API,比如

。has前綴

。小寫字符串

。組件分離字符串

SubstringWithRange等等

所以開發中很多常規操作使用兩者之壹是可以的。下面說說區別。

NSString是引用類型。SwiftString是壹種值類型。

var nsString:NSString = NSString()

var swiftString:String = String()

var nsString:NSString = "dsx "

var swiftString:String = "dsx "

兩者都可以直接用自己的類名初始化,下面的方法也是初始化。雖然也是這樣寫的,但是NSString的意思是初始化壹個指向這個字符串的指針,而SwiftString的意思是把字符串的文字值賦給壹個變量。

SwiftString字符串之間的拼接比NSString更方便。

NSString需要用append或stringWithFormat連接兩個字符串。

NSString *strA = @ "我的名字";

NSString *strB = @ "是dsx ";

strA =[strA stringByAppendingString:strB];

SwiftString只需要“+”。

var strA = "我的名字"

var strB = " is dsx "

strA = "我的名字"+"是dsx "

strA = strA + strB

println(澳大利亞)

在swift的初期,語法允許字符串和字符之間直接使用“+”拼接,但是在swift1.2之後,就不能這麽做了,字符串和字符只能用append直接連接。

SwiftString可以遍歷字符串。

SwiftString可以遍歷並輸出壹個字符串中的所有字符,這是NSString做不到的,因為前者繼承了CollectionType協議(swift2以後不再繼承這個協議,而是通過壹個characters屬性提供壹個字符集合)。

// swift1.2

對於“我的名字是dsx”中的字符{

println(字符)

}

// swift2.0

對於“我叫dsx”中的角色。字符{

打印(字符)

}

Swift的字符串更像是由多個字符元素組成的序列的乘積,像但不是集合類;如果在上面的“這是壹本書”後添加as NSString,將會報告以下錯誤:

類型“NSString”不符合協議“SequenceType”

swift2.0之後寫成String也會報錯以上。2.0將原來由String繼承的SequenceType和CollectionType協議下沈到String中。CharacterView繼承它們。我感覺蘋果這麽做的目的是為了減少資源浪費。

SwiftString計算字符串長度的方式不同於NSString。

Var strA:String = "mc Dream "

Var strB:NSString = "mc Dream "

print(stra . lengthbytesusingencoding(nsu TF 8 string encoding))//5

print(stra . characters . count))//3

print(strb . length);// 3

NSString可以直接使用字符串。length來獲取字符串的長度,但該字符串只能鍵入。lengthfetsusingencoding(nsu TF 8字符串編碼),所以漢字的存儲空間是英文的三倍。斯威夫特的真實方法類似於。長度是取出字符屬性(數組)然後。數數。

SwiftString比較字符串相等性的方式與NSString不同。

let strA:NSString = " "

let strB:NSString = " "

let strC:NSString = "dsx "

let strD:NSString = "dsx "

if(stra . isequaltostring(strB as String)){

打印(“是”);

}

if (strC == strD){

打印(“是”);

}

NSString有壹個方法isEqualToString來判斷兩個字符串是否完全相等。String沒有這個方法,但是因為String是值類型,所以可以直接用= =來判斷。

NSString可以用基本數據類型進行轉換。

var strA:NSString = "12306 "

var strB:NSString = "0.618 "

var numOfInt = strA.integerValue

var numOfDouble = strB www.hnnedu.comdoubleValue

Swift沒有這個功能,所以在json解析或者字典到模型轉換的時候使用NSString可能更方便。

SwiftString可以通過isEmpty屬性確定字符串是否為空。

var emptyStr = " "

如果emptyStr.isEmpty {

打印(“它是空的”)

}

這也是swiftString獨有的屬性。(董博然)壹般NSString要判斷字符串是否為空,需要看是否。長度>;0。不再使用判斷NSString == nil的方法,會報錯。

二元運算符“==”不能應用於“NSString”和“NilLiteralConvertible”類型的操作數

SwiftString獨特的字符串插入字符功能

var strA:String = "我的名字是dx "

strA.insert("s ",at index:stra . characters . index of(" x ")!);

print(strA) //我的名字是dsx

此方法只能插入單個字符,而不能插入字符串。如果它被寫成“ss”,它將給出無法將類型“string”的值轉換為預期的參數類型“character”的錯誤。

如果妳沒有在董博然博客園看到這篇文章,請點擊查看原文。

NSString是指針,無法執行此操作。而String也有NSString的subStringFromIndex或者ToIndex的功能。