Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 转换[字符串]?迅速插队_Arrays_Xcode_String_Swift - Fatal编程技术网

Arrays 转换[字符串]?迅速插队

Arrays 转换[字符串]?迅速插队,arrays,xcode,string,swift,Arrays,Xcode,String,Swift,对于我的项目,我从Swift中的CSV文件中提取推文。问题是现在所有tweet都被解析为数组中的一个元素,用“,”分隔 错误消息:“[String]?”没有名为的成员 “由字符串分隔的组件” 我检查了tweetsOfColumns是否包含多个元素,但它不允许我使用tweetsOfColumns[index]下标 columns["tweet"] 它将返回一个可选值,因为如果没有与键相关联的内容,它将返回nil(None),否则将返回包装在可选值(Some(data))中的值。 因此,您必须展开

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

错误消息:“[String]?”没有名为的成员 “由字符串分隔的组件”


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

columns["tweet"]
它将返回一个可选值,因为如果没有与键相关联的内容,它将返回nil(None),否则将返回包装在可选值(Some(data))中的值。 因此,您必须展开可选文件,例如:

columns["tweet"]!

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

let seperatedColumns = tweetsOfColumns?.componentsSeparatedByString(",")
但你应该打开它:

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

问题可能是你会得到一个可选的背部,你必须打开它。最简单、最优雅的方法是使用if-let展开器

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

根据David的问题和OP在OP评论中的回复,您可以在列[“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(",")
    }
}

查看您引用的链接,
列[“tweets”]
将从“tweets”列返回一个值数组,所以这是您已经需要的,并没有额外的逗号用于拆分内容,您只需要:

let seperatedColumns = columns["tweet"]

使数组包含每行的tweet列。

在此处显示“tweetsOfColumns”输出。..tweetsOfColumns只是一组测试tweet、带有句柄的tweet、hashtags和内容@dasblinkenlight所有tweet都保存为数组中的一个元素。我似乎无法单独访问推文。我想对它们执行一些正则表达式来提取句柄、hashtags等。显示
列的声明/创建
我从错误消息中猜测是
[String:[String]]
而不是答案似乎假设的
[String:String]
。在这种情况下,可选的展开将使您进入
[String]
,它不需要传递给
组件,因为它已被拆分。它确实以[String]而不是String返回,我无法对[String]执行有意义的操作。这些列是在SwiftCSV项目打开的情况下创建的。如果我尝试通过任何一种方式打开它,错误消息会不断出现:“[String]”没有名为“componentsSeparatedByString”的成员是的,就是这样,感谢大家的快速帮助和建议。如果合适并回答了您的问题,请不要忘记接受答案。(点击答案旁边的复选标记)这将鼓励人们在将来回答问题。
let seperatedColumns = columns["tweet"]