我想创建一个数组超出文本拆分,然后删除我想要的任何项目。代码片段不会编译,因为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