In swift3 habe ich Probleme beim Zugriff auf lokale Dateien, die ich heruntergeladen und dann entpackt habe.Optional in Dateipfad Swift3
Der Pfad enthält "Optional":
Users/name/Library/Developer/CoreSimulator/Devices/..../data/Containers/Data/Application/...
/Documents/Optional("folder-name")/Optional("file-name")
Mein Code, diesen Weg zu schaffen ist:
let videoPath = fileManager!.appendingPathComponent("\(MyObj.folder)/\(MyObj.fileName)")
SpeedLog.print(videoPath.path)
Die Klasse MyObj ist:
class MyObj : NSObject, NSCoding {
var fileName:String!
var folder:String!
required convenience init?(coder decoder: NSCoder) {
self.init()
self.fileName = decoder.decodeObject(forKey: "fileName") as! String
....
}
convenience init(id:Int,fileName:String,...) {
self.init()
self.fileName = fileName
....
}
func encode(with coder: NSCoder) {
if let fileName = fileName { coder.encode(fileName, forKey: "fileName") }
....
}
Wie der Weg bauen ohne "Optional?
Vielen Dank für die Erläuterungen. Tatsächlich ist MyObj eine Instanz von MyObj, ich habe es im Beispiel einfach umbenannt. Also habe ich mich in fileManager! .appendingPathComponent ("\ (MyObj.folder!)/\ (MyObj.fileName!)" Geändert) und es funktioniert, aber ich verstehe nicht wirklich, warum ich hinzufügen muss! wie vorher es funktionierte und da ist es schon! in der Klassendefinition – Ludo
@Ludo Eigentlich sieht es so aus, als ob du alles richtig gemacht hast, aber Apple hat die Art und Weise geändert, wie Swift implizit ausgepackte Optionen in der String-Interpolation behandelt. Ich fügte eine Erklärung und eine alternative Weise hinzu, Strings zu meiner Antwort zu verursachen. – Robert