ファイルに保存する
位置情報のログを取る場合など、ログをファイルに保存したい
こんな感じでファイルに文字列を保存するLog
クラス
(例:位置情報ログをCSVで保存する)
// 1
Log.write("timestamp,latitude,longitude,altitude\n")
// 2
Log.write("""
\(formatDate(date: location.timestamp)),\
\(location.coordinate.latitude),\
\(location.coordinate.longitude),\
\(location.altitude)\n
""")
Log.swift
import Foundation
class Log {
private static let file = "log.csv"
static func write(_ log: String) {
writeToFile(file: file, text: log)
}
private static func writeToFile(file: String, text: String) {
guard let documentPath =
FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first else { return }
let path = documentPath.appendingPathComponent(file)
_ = appendText(fileURL: path, text: text)
}
private static func appendText(fileURL: URL, text: String) -> Bool {
guard let stream = OutputStream(url: fileURL, append: true) else { return false }
stream.open()
defer { stream.close() }
guard let data = text.data(using: .utf8) else { return false }
let result = data.withUnsafeBytes {
stream.write($0, maxLength: data.count)
}
return (result > 0)
}
}
ファイルを抜き出す
Info.plist
で
Application supports iTunes file sharing
を追加し、値をYES
にする
MacとiPhoneを接続すると、Finder(or iTunes)にて、ファイルを抜き出すことができる