2014-10-31 33 views
2

我想創建一個數組超出文本拆分,然後刪除我想要的任何項目。代碼片段不會編譯,因爲a不可變。 我該怎麼辦?swift:如何分割一個字符串並刪除第一個元素?

var a = [] 
// ... 
a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false) 
let sentence = a.removeAtIndex(0) 
+0

'A'是可變的,該代碼編譯(並運行)沒有問題我。 – 2014-10-31 20:37:09

+0

@Martin R,我更新了這個問題,介紹了編譯中斷的實際代碼。 – 2014-10-31 20:42:06

回答

4
var a = [] 

a定義爲一個NSArray,而且不具有removeAtIndex()。用

替換
var a : [String] 

應該解決問題。或者,聲明並分配一個變量:

var a = split(text, { $0 == "\n"}, maxSplit: Int.max, allowEmptySlices: false) 
+0

謝謝。有沒有辦法直接設置一個NSMutableArray?另外的問題是:使用swift數組或NSArray會有什麼性能損失或優勢嗎? – 2014-10-31 20:49:12

+0

@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

0

修改您的數組聲明?

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) 

打印 「[某些詞語]」

相關問題