So scheint es, Ihre NSURL(fileURLWithPath: pdfPathWithFileName) as CFURLRef
Teil ausfällt, und das ist, was Ihre Probleme verursacht.
Ich finde dies nur in dem documentation about CFURL
CFURL nicht ein Objekt zu erstellen, wenn die Zeichenfolge nicht übergeben wird gut gebildet (das heißt, wenn es mit RFC 2396 nicht entspricht). Beispiele für Fälle, die nicht erfolgreich sind, sind Zeichenfolgen, die Leerzeichen und High-Bit-Zeichen enthalten. Wenn eine Funktion ein CFURL-Objekt nicht erstellen kann, gibt es NULL zurück, auf das Sie vorbereitet sein müssen. Wenn Sie CFURL-Objekte mit Dateisystempfaden erstellen, sollten Sie die Funktionen CFURLCreateFromFileSystemRepresentation und CFURLCreateFromFileSystemRepresentationRelativeToBase verwenden, die die feinen Unterschiede zwischen URL-Pfaden und Dateisystempfaden behandeln.
Und this question scheint etwa das gleiche Problem zu sein. Wie one of the answers vorschlagen:
Sie müssen die Konvertit CFStringRef NSString dann CFURLCreateWithFileSystemPath nennen;
Hoffnung, die Ihnen hilft.
Haben Sie eine Ausgabe von dem Absturz? Versuchen Sie auch, die 'localUrl als CFURLRef' in eine separate Zeile zu extrahieren, um zu sehen, ob das" nil "ist, ich vermute, dass Sie hier ein Problem haben. – pbodsk
@bodsk: Ja, es gibt keine Antwort und ich weiß nicht warum ...? Diese Zeile gibt CGPDFDocumentCreateWithURL (localUrl als CFURLRef) zurück! Null. Obwohl localUrl einen Dateipfad hat. –
In Swift müssen Sie den Typ einer Variablen nicht explizit benennen, wenn Swift den Typ ableiten kann. Zum Beispiel kann 'let path: NSArray = NSSearchPathForDirectoriesInDomains (.DocumentDirectory, .UserDomainMask, true)' leicht als 'let path = NSSearchPathForDirectoriesInDomains (.DocumentDirectory, .UserDomainMask, true)' dargestellt werden, mit dem zusätzlichen Bonus, dass Swift die Typen kennt Vom Array wird ein 'String' verwendet. – MaddTheSane