2014-10-31 29 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) 

打印 “[某些词语]”

相关问题