我使用核心数据存储用户信息,我尝试使用“writeToFile”编写测量数据(来自内置加速度计)。
核心数据与持久存储用户数据的作用很好;但是,“writeToFile”存储的测量数据文件在写入较长时间/较新文件后会逐渐消失。
我应该使用SQLite或任何其他数据库存储测量数据文件吗?或者是否可以使用核心数据来存储文件(虽然似乎无法实现)?我想将用户数据和测量数据保存到持久存储中。谢谢你的建议!!
func writeToFile () {
let firstName = String(trial!.project!)
let secondName = String(trial!.record!)
let exportFilePath = NSTemporaryDirectory() + "\(firstName)_\(secondName).csv"
let exportFileURL = NSURL(fileURLWithPath: exportFilePath)!
NSFileManager.defaultManager().createFileAtPath(exportFilePath, contents: NSData(), attributes: nil)
更新: 使用“NSFileManager.defaultManager()。URLForDirectory”解决了问题。最终代码如下所示:
我不确定您是否需要声明“createDirectoryAtURL”或者是否可以创建文件。
let documentsURL = NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: NSURL(), create: true, error: nil)
NSFileManager.defaultManager().createDirectoryAtURL(documentsURL!, withIntermediateDirectories: true, attributes: nil, error: nil)
let fileURL = documentsURL!.URLByAppendingPathComponent("\(firstName).csv")
NSFileManager.defaultManager().createFileAtPath(fileURL.path!, contents: NSData(), attributes: nil)
let fileHandle = NSFileHandle(forWritingToURL: fileURL, error: nil)
if let fileHandle = fileHandle {
...
fileHandle.writeData(csvData!)
...
答案 0 :(得分:2)
您正在使用NSTemporaryDirectory
存储文件。该目录的重点是文件临时,这意味着操作系统可以自由删除它们。你说他们在很长一段时间后消失了#34 ;;这与NSTemporaryDirectory
的预期行为完全吻合。
如果您需要保留文件,则应使用urls(for:in:)
上的NSFileManager
方法获取文档目录的位置(.documentDirectory
)。