2017-12-08 3 views
0

Ich versuche, eine Kopie einer .plist in den Ordner Dokumente zu erstellen. Ich habe diesen Code, aber ich bekomme "Dateikopie Fehler".Swift 3 Dateikopie Fehler

let srcPath = Bundle.main.path(forResource: "Gameboard", ofType: "plist") 
//let path = Bundle.main.resourcePath! 
let path = String(describing: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first) 
print(srcPath) 
print(path) 
do { 
    //Copy the project plist file to the documents directory. 
    try FileManager.default.copyItem(atPath: srcPath!, toPath: path) 
} catch { 
    print("File copy error!") 
} 
+0

Mögliche Duplikat https://stackoverflow.com/q/25291115/1187415. –

+0

'FileManager.default.copyItem (atPath :, toPath:)' wirft keinen Fehler, der Ihnen Hinweise auf das Problem geben könnte? – Larme

+1

Verwenden Sie niemals 'String (beschreibend)', um eine 'URL' in eine' Zeichenfolge' zu ​​konvertieren. Verwenden Sie die richtige 'URL'-Methode (in diesem Fall' path'). – rmaddy

Antwort

0

Documentation:

dstPath
Der Pfad, an dem die Kopie von srcpath zu platzieren. Dieser Pfad muss den Namen der Datei oder des Verzeichnisses an ihrem neuen Speicherort enthalten. Dieser Parameter darf nicht Null sein.

Sie müssen den Dateinamen "Gameboard.plist" an den Zielpfad anhängen:

let srcUrl = Bundle.main.url(forResource: "Gameboard", ofType: "plist") 
let documentsUrl = FileManager.default.urls(
    for: .documentDirectory, 
    in: .userDomainMask 
).first! 
let destinationUrl = documentsUrl.appendingPathComponent(
    "Gameboard.plist", // or srcUrl.lastPathComponent 
    isDirectory: false 
) 

do { 
    try FileManager.default.copyItem(at: srcUrl, to: destinationUrl) 
} catch { 
    ... 
}