我想創建一個數組超出文本拆分,然後刪除我想要的任何項目。代碼片段不會編譯,因爲a不可變。 我該怎麼辦?swift:如何分割一個字符串並刪除第一個元素?
var a = []
// ...
a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false)
let sentence = a.removeAtIndex(0)
我想創建一個數組超出文本拆分,然後刪除我想要的任何項目。代碼片段不會編譯,因爲a不可變。 我該怎麼辦?swift:如何分割一個字符串並刪除第一個元素?
var a = []
// ...
a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false)
let sentence = a.removeAtIndex(0)
var a = []
a
定義爲一個NSArray
,而且不具有removeAtIndex()
。用
var a : [String]
應該解決問題。或者,聲明並分配一個變量:
var a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false)
謝謝。有沒有辦法直接設置一個NSMutableArray?另外的問題是:使用swift數組或NSArray會有什麼性能損失或優勢嗎? – 2014-10-31 20:49:12
@StaphanedeLuca在swift中用'var'創建的數組在創建時是可變的,'let'定義了不變性。 'var a:[String]'實際上是一個可與Objective-C互換的快速數組。至於性能損失,我不確定,但是我知道最好用不可變對象(在WWDC討論中)參考swift數組。https://developer.apple.com/library/mac/documentation/Swift/Conceptual /Swift_Programming_Language/CollectionTypes.html – sbarow 2014-10-31 21:11:34
修改您的數組聲明?
var a = Array<String>()
let text = "this has \nsome words"
a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false)
let sentence = a.removeAtIndex (0)
print(a)
打印 「[某些詞語]」
'A'是可變的,該代碼編譯(並運行)沒有問題我。 – 2014-10-31 20:37:09
@Martin R,我更新了這個問題,介紹了編譯中斷的實際代碼。 – 2014-10-31 20:42:06