2015-03-06 7 views
5

Ich habe eine .plist Datei bearbeitet. Wie ich es verstanden habe: Wegen Sandboxing ist es nur möglich Dateien innerhalb der .playgrounds Datei in einem Resources Verzeichnis zu lesen. Aber wie ist es möglich, die bearbeitete Datei in diesen Ordner zu schreiben?Wie writeToFile in einem .playground?

// read file 
let xmlPath: String = NSBundle.mainBundle().pathForResource("Settings", ofType: "plist")! 
var xmlDictionary: [String : AnyObject] = NSDictionary(contentsOfFile: xmlPath) as Dictionary<String, AnyObject> 

// editing file 
// ... 

// saving file 
let saveDict: NSDictionary = xmlDictionary as NSDictionary 
let savePath: String = xmlPath.stringByDeletingLastPathComponent.stringByAppendingPathComponent("Saved.plist") 
saveDict.writeToFile(savePath, atomically: false) // ~> false 

Ob savePath noch xmlPath arbeitet, kehrt false kein Erfolg bedeutet.

Es wäre schön, wenn ich die alte (nicht editierte) Version der .plist Datei ersetzen könnte, aber das Speichern in eine neue Datei wäre auch in Ordnung.

Antwort

2

Ändern von Dateien im Hauptpaket scheint nicht möglich zu sein, see earlier question. Was Sie tun können, ist auf die Sandbox-Anwendungsordner zu speichern, die URLs, für die wie diese können abgerufen:

func applicationDirectory(directory:NSSearchPathDirectory) -> NSURL? { 

    var appDirectory:String? 
    var paths:[AnyObject] = NSSearchPathForDirectoriesInDomains(directory, NSSearchPathDomainMask.UserDomainMask, true); 
    if paths.count > 0 { 
     if let pathString = paths[0] as? String { 
      appDirectory = pathString 
     } 
    } 
    if let dD = appDirectory { 
     return NSURL(string:dD) 
    } 
    return nil 
} 



func applicationTemporaryDirectory() -> NSURL? { 

    if let tD = NSTemporaryDirectory() { 
     return NSURL(string:tD) 
    } 

    return nil 

} 

applicationTemporaryDirectory() 

applicationDirectory(NSSearchPathDirectory.DocumentDirectory) 

Die Urls in der rechten Seite des Spielplatzes angezeigt wird, dann einfach kopieren und in den Finder -> Gehe zu -> Gehe zu Ordner Dialogbox.

GitHub Repo: Für ein voll funktionsfähiges Beispiel siehe GitHub repo.