"Hi;Test;Pen"
のようなテキストを.csvファイルに追加したいとします。Swiftの.csvデータにテキストを追加するには?
Xcodeプロジェクトに.csvのテキストを挿入するのにCSVImporterを使用しました。ここでは、コードが、私はそれのために使用しているされています
guard let VokabelPath = Bundle.main.path(forResource: ResourceExample, ofType:"csv") else {
debugPrint(ResourceExample + " not found")
return
}
let importer = CSVImporter<[String]>(path: VokabelPath, delimiter: ";")
let importedRecords = importer.importRecords { $0 }
for record in importedRecords {
self.Vokabeln.insert(record, at: self.Vokabelzähler)
self.Vokabelzähler += 1
}
をしかし、私は
- にしたいいくつかの理由でファイル内のファイルへ
- 変更何かを何かを追加(例えば4行目で)
- ファイル内のテキストを削除します(例:
filetext = ""
私はthis Tutoを使用しようとしました私はこのコードを作った:
let fileName = "Tasks.csv"
let path = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(fileName)
var csvText = "Test;Example;Apple;Pen\n"
do {
try csvText.write(to: path!, atomically: true, encoding: String.Encoding.utf8)
} catch {
print("Failed to create file")
print("\(error)")
}
guard let VokabelPath = Bundle.main.path(forResource: "Tasks", ofType:"csv") else {
debugPrint("Tasks not found")
return
}
let importer = CSVImporter<[String]>(path: VokabelPath, delimiter: ";")
let importedRecords = importer.importRecords { $0 }
for record in importedRecords {
self.Vokabeln.insert(record, at: self.Vokabelzähler)
self.Vokabelzähler += 1
print(record)
}
しかし、彼は "タスクが見つかりません"だけを印刷します。私の間違いは何ですか?
私はあなたが私を助けることができると思います
は、ありがとうございます。
EDIT:
最初の回答をした人が書いた、私は、バンドル内のファイルを保存することはできません。彼は私に書かれた 私はNSSearchPathForDirectoriesInDomains
ので、私は更新されている私のコードを使用する必要があり、これは動作します:
let DownloadPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let VokabelPath = DownloadPath.appendingPathComponent("Tasks.csv")
let InhaltData = Inhalt.data(using: .utf8)
print(VokabelPath)
FileManager.default.createFile(atPath: VokabelPath, contents: InhaltData, attributes: nil)
let importer = CSVImporter<[String]>(path: VokabelPath, delimiter: ";")
let importedRecords = importer.importRecords { $0 }
for record in importedRecords {
self.Vokabeln.insert(record, at: self.Vokabelzähler)
self.Vokabelzähler += 1
}
しかし、私は一つのさらなる疑問を持っている: は、私は私のXcodeプロジェクトにいくつかの件のデータを肝炎と私はBundle.main
でそれらを得ることができます。しかし、私は1つの関数だけを使いたいので、NSSearchPathForDirectoriesInDomains
でそれらを得ることも可能ですか?
私はこれを試しましたが、私は新しいファイルを書き留めておきたい場合は、 'VarkabelPath = Bundle.main.path(forResource:ResourceExample、ofType:" csv ")else { debugPrint(ResourceExample + "not found") return } '私はエラーが発生します。 –
バンドルパスに新しいファイルを書き込むことはできません:)バンドルは基本的にアプリケーションファイルです。変更することはできません。代わりに、新しいファイルをデバイスのサンドボックスドキュメントフォルダのパスに保存する必要があります。 NSSearchPathForDirectoriesInDomainsメソッドでドキュメントフォルダを取得し、作成する新しいCSVファイルのファイル名を追加することができます。 – Fahim
これを行う方法はわかりません。私は私の質問を編集しました、私はあなたが今、私が間違っていたこと、そしてそれがうまくいかなければならないかの例を教えてくれることを願っています。ありがとうございました。 –