Meine App teilt ein Foto auf Instagram. Dazu speichert sie es zunächst in einem temporären Verzeichnis:
let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo")
Es hat gearbeitet Swift 1.2
, funktioniert aber nicht Swift 2.0
.
Die angegebene Fehlermeldung lautet:
stringByAppendingPathComponent ist nicht verfügbar: Verwenden Sie stattdessen URLByAppendingPathComponent für NSURL.
Application%20Support
stringByAppendingPathComponent
, siehe meine Antwort unten.NSURL
Methode, sondern eineNSString
stringByAppendingPathComponent
wird in Swift 2.0 entfernt" ist nicht korrekt, und @Maysam hat nicht nur nach derNSURL
Methode gefragt .Es funktioniert für,
NSString
so dass Sie es wie folgt verwenden können:Jetzt können Sie diese Erweiterung verwenden , die Ihre konvertieren
String
zuNSString
ersten und dann den Betrieb durchzuführen.Und Ihr Code lautet:
Hier sind einige andere Methoden zur Verwendung:
Referenz von HIER .
Für schnelles 3.0:
quelle
NSURL
sollte stattdessen verwendet werden. Nur sagen.checkResourceIsReachable()
odercheckPromisedItemIsReachable()
aufURL
verwenden sollten.FileManager
ist immer noch eine ObjC-Klasse,NSFileManager
derenNS
Präfix für Swift entfernt wurde und diefileExistsAtPath
seit OS X 10.0 vorhanden war. Die Welt hat sich seitdem weiterentwickelt. Da Apps in einer Sandbox gespeichert sind (was unter iOS weniger offensichtlich ist), ist die Datei möglicherweise vorhanden. Sie haben möglicherweise keine Berechtigung zum Anzeigen. Die Datei befindet sich möglicherweise auch in der Cloud usw. Aus diesem Grund wird die einfacheBOOL
Methode durch etwas Komplexeres ersetztURL
, das jedoch semantisch korrekter ist.Wickeln Sie einfach Ihre Schnur als
NSString
.quelle
String
Klasse haben das nicht, aber esNSString
gibt sie! macht Sinn.für Swift 3 :
oder besser diese Erweiterung erstellen:
Verwendung:
quelle
Swift 3 Lösung:
Hier ist eine Funktion zum Abrufen des Dokumentenverzeichnispfads.
Wie benutzt man:
Ergebnis:
quelle
Für schnelle 2.0
quelle
Sie können stattdessen URLByAppendingPathComponent () verwenden. Bitte beachten Sie, dass Sie die Pfadzeichenfolge kürzen sollten, um das Präfix „file: //“ zu entfernen:
quelle
Mach Folgendes:
quelle
Ich habe es versucht und es hat das Problem gelöst.
Vor:
nach dem:
quelle
Wenn die Verwendung von
NSString
Pfadmethoden (anstelle vonString
URL-Methoden) akzeptabel ist, ist es viel einfacher, sieString
mit einer berechneten Eigenschaft oder einer Methode zu erweitern, die ihren Wert alsNSString
zurückgibt (anstatt die gewünschten Methoden inString
Erweiterung zu duplizieren ):und dann:
quelle
Swift 4
quelle