好像我的文本文件不会永久存储在文档目录

时间:2015-05-16 23:48:19

标签: ios swift nsdate nsdocumentdirectory

注意:可能已解决:缺少" .path!" to documentsUrl.path!.stringByAppendingPathComponent(path)

我正在将文本文件保存到Applications Documents Directory。使用

var path = ""
let date = NSDate()
let file = "\(date).txt"
let joined = "\n".join(ActionArray)
if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String] {
    let dir = dirs[0]
    path = dir.stringByAppendingPathComponent(file);
    println(path)

    joined.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil);
}

println path

  

/用户/达斯汀/库/开发商/ CoreSimulator /设备/ 5EA056FC-114D-4C98-9B35-29B46760BE3A /数据/容器/数据/应用/ 2AB9FD4A-25AB-4385-9CFB-A66AEFA8C1A3 /文档/ 2015-05- 16 08:24:08 + 0000.txt

然后将path和其他一些数据存储到Entity,稍后将用于回调文本文件。

当我在实体上执行fetchRequest并打印出数组时,我得到了

  

(       " (entity:Entity; id:0xd000000000040000; data:{\ n date = \" 2015-05-16 08:18:20 +0000 \&#34 ;; \ n path = \" / Users / dustin / Library / Developer / CoreSimulator / Devices / 5EA056FC-114D-4C98-9B35-29B46760BE3A / data / Containers / Data / Application / 4A9C17AB-57C1-47CB-B9B1-E0E5CA494B4E / Documents / 2015-05-16 08:24: 08 \&#34 ;; \ N})"   )

path现在错过了" + 0000&#34 ;.当我从Entity.path调用路径时,找到了我的文本文件...但是当我完全关闭app(home-swipe- ^)时,文本文件搜索...

let fileContent = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)!
var fileContentArr = split(fileContent) {$0 == "\n"}

我得到了

  

致命错误:在解包可选值时意外发现nil

如果App重置,那么写一个持久文本文件以便以后绘制我做错了什么?

编辑:我已经建议注意应用会话之间的目录路径更改,因此我将文件名存储到Entity并在读取时获取文档路径。我仍然得到错误。

我正在做一些调试,我的println如下

let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as! NSURL

    // now lets get the directory contents (including folders)
    if let directoryContents =  NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentsUrl.path!, error: nil) {
        println(directoryContents)
        println(documentsUrl.path!)
    }
  

[2015-05-17 04:25:48 + 0000.txt,2015-05-17 04:31:07 + 0000.txt,iPro_Poker_HH_swift.sqlite,iPro_Poker_HH_swift.sqlite-shm,iPro_Poker_HH_swift.sqlite-wal]

     

/用户/ dustindobrilovic /库/开发商/ CoreSimulator /设备/ 5EA056FC-114D-4C98-9B35-29B46760BE3A /数据/容器/数据/应用/ 7CD25462-947C-40AA-97dB的-4A845FED1451 /文件

我的实体获取数组println()

  

(   " (entity:Hand; id:0xd000000000080000; data:{\ n path = \" 2015-05-17 04:31:07 + 0000.txt \"; \ n})"   )

然后我将documentsUrl.path!path结合起来获取println(stringDocumentsURL)

  

的文件:/用户/ dustindobrilovic /库/开发商/ CoreSimulator /设备/ 5EA056FC-114D-4C98-9B35-29B46760BE3A /数据/容器/数据/应用/ 7CD25462-947C-40AA-97dB的-4A845FED1451 /文档/ 2015 - 05-17 04:31:07 + 0000.txt

这是我收到警告的地方。

let fileContent = String(contentsOfFile: stringDocumentsURL, encoding: NSUTF8StringEncoding, error: nil)! 
  

致命错误:在解包可选值时意外发现nil

>

1 个答案:

答案 0 :(得分:0)

启动时路径发生变化。尝试仅保留路径的相对部分,并在访问之前重构绝对路径。