对于我的项目,我从Swift中的CSV文件中提取了推文。问题是现在所有推文都被解析为数组中的一个元素,用“,”分隔。
let tweetsOfColumns = columns["tweet"]
let seperatedColumns = tweetsOfColumns.componentsSeparatedByString(",")
错误讯息:'[String]?'没有名为的成员 'componentsSeparatedByString'。
我检查了tweetsOfColumns是否包含多个元素,但它不允许我使用tweetsOfColumns [index]下标。
答案 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(",")
}
}