转换[String]?在Swift中使用String

时间:2015-02-19 13:11:16

标签: arrays xcode string swift

对于我的项目,我从Swift中的CSV文件中提取了推文。问题是现在所有推文都被解析为数组中的一个元素,用“,”分隔。

let tweetsOfColumns = columns["tweet"]
let seperatedColumns = tweetsOfColumns.componentsSeparatedByString(",")
  

错误讯息:'[String]?'没有名为的成员   'componentsSeparatedByString'。

我检查了tweetsOfColumns是否包含多个元素,但它不允许我使用tweetsOfColumns [index]下标。

5 个答案:

答案 0 :(得分:1)

查看您引用的链接,columns["tweets"]将返回"推文"中的一系列值。专栏,所以它已经是你需要的,没有额外的逗号分开,你只需要:

let seperatedColumns = columns["tweet"]

要有一个包含每行tweet列的数组。

答案 1 :(得分:0)

当您尝试从字典中获取元素时,例如

columns["tweet"]
它会给你一个可选的,因为如果没有任何关联的键,它会给你返回nil(None),否则包含在一个可选的值(Some(数据))。 所以你必须解开可选的例子:

columns["tweet"]!

答案 2 :(得分:0)

您必须使用可选的?来访问字符串:

let seperatedColumns = tweetsOfColumns?.componentsSeparatedByString(",")

但你应该解开它:

if let unwrappedTweets = tweetsOfColumns?.componentsSeparatedByString(","){
    let seperatedColumns = unwrappedTweets
}

答案 3 :(得分:0)

问题可能是你得到一个可选的背部,你需要打开它。最简单,最优雅的是使用if-let unwrapper。

if let tweetsOfColumns = columns["tweet"] {
    let seperatedColumns = tweetsOfColumns.componentsSeparatedByString(",")
    // do something with the seperatedColumns
}

答案 4 :(得分:0)

根据David的问题以及OP在OP评论中的回答,你可以使用map [“tweet”]返回的数组上的map。请在将来发布实际数据/代码。

let columns = [
    "tweet":["handleX,tag1,tag2,textA,textB",
             "handleY,tag1,tag2,textC,textD"]]

var chunk = [[String]]()
if columns["tweet"] != nil {
    chunk = columns["tweet"]!.map {
        return $0.componentsSeparatedByString(",")
    }
}

enter image description here