【问题标题】:Error writing a file in Swift Playground在 Swift Playground 中写入文件时出错
【发布时间】:2018-07-25 16:20:00
【问题描述】:

不知道为什么我在这里收到错误。我按照说明在文档中创建了“Shared Playground Data”文件夹。有人有什么见解吗?

import PlaygroundSupport
import Foundation

var fileName = "Csv.csv"
var csvText = "Date,Task,Time Started,Time Ended\n"
fileName.append(csvText)

let fileUrl = playgroundSharedDataDirectory.appendingPathComponent(fileName)
do {
try fileName.write(to: fileUrl, atomically: true, encoding: .utf8)
} catch {print("error")}

【问题讨论】:

  • 你为什么不把你的catch改成print(error)然后你就可以看到实际的问题了。

标签: swift csv fwrite swift-playground


【解决方案1】:

我不知道是哪个 Xcode 引入了这个错误,但是在 Xcode 13 beta 2 上 Playgrounds 找不到 playgroundSharedDataDirectory 目录,所以改为这样做:

Swift 5 版本

let docDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileName = "Csv.csv"
let outputFileUrl = docDirectory.appendingPathComponent(fileName)

let csvText = "Date,Task,Time Started,Time Ended\n"

do {
  try csvText.write(to: outputFileUrl, atomically: true, encoding: .utf8)
} catch {
  print (error)
}

【讨论】:

    【解决方案2】:

    您的代码毫无意义。为什么将列标题附加到文件名?还有为什么要把fileName的内容写成fileUrl呢?

    您可能想要以下内容:

    let fileName = "Csv.csv"
    let csvText = "Date,Task,Time Started,Time Ended\n"
    
    let fileUrl = playgroundSharedDataDirectory.appendingPathComponent(fileName)
    do {
        try csvText.write(to: fileUrl, atomically: true, encoding: .utf8)
    } catch {
        print(error)
    }
    

    【讨论】:

    • @Lyres - 如果他回答了你的问题,你应该点击他回答旁边的复选标记以“接受”它。见What should I do when someone answers my question?
    • 得到了这个:Use of unresolved identifier 'playgroundSharedDataDirectory'
    • @János 尝试导入 PlaygroundSupport
    猜你喜欢
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多