在Swift中将对象写入CSV时如何处理逗号?

时间:2016-07-02 18:57:28

标签: swift csv

似乎在堆栈溢出上有其他答案,但没有什么特定于swift。

我正在从包含3个属性的网站对象生成CSV

Struct SiteDetails {
    var siteName:String?
    var siteType: String?
    var siteUrl: String?
}

问题是siteName可能包含一个逗号,因此当我读回CSV文件时,很难将CSV转换回对象,因为有些行有4个或更多CSV元素。

以下是我用于导出为CSV的代码:

func convertToCSV(sites: [SiteDetails]) -> String {
     var siteAsCSV = ""
     siteAsCSV.appendContentsOf("siteName,siteType,siteUrl\n")

     for site in sites { 
        siteAsCSV.appendContentsOf("\(site.siteName),\(site.siteType),\(site.siteUrl)\n")
    }
}

如何阻止这个额外的逗号问题?

2 个答案:

答案 0 :(得分:4)

CSV specification建议将包含特殊字符的所有字段换成双引号。

答案 1 :(得分:3)

我设法通过修改为每个字段添加双引号来实现此功能。在Swift中,当你查看Xcode的语法高亮时,这要求你跳过看起来不会运行的引号,但它工作正常。

func convertToCSV(sites: [SiteDetails]) -> String {
    var SiteAsCSV = ""
    SiteAsCSV.appendContentsOf("siteName,siteType,siteUrl\n")

    for site in sites { 
        SiteAsCSV.appendContentsOf("\"\(site.SiteName)\",\"\(site.Sitetype)\",\"\(site.SiteUrl)\"\n")
    }
}