2016-05-22 19 views
-1

Also ich versuche, ein PDF mit swift zu generieren. Ich habe versucht, von Objective C zu Swift zu konvertieren und für den Moment gibt es einige Fehler, die ich nicht zu beheben weiß. HierGenerieren PDF mit Swift 2.0

ist der Code:

@IBAction func createPDFOnClick(sender: AnyObject!) 
{ 
    pageSize = CGSizeMake(850,1100) 
    let fileName: String = "makeME.pdf" 
    var path: [AnyObject] = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,true) 
    let documentDirectory: String = path[0] as! String 
    let pdfPathWithFileName: String = documentDirectory.stringByAppendingString(fileName) 
    self.createPDF(pdfPathWithFileName) 

} 

func createPDF(filePath: String){ 

UIGraphicsBeginPDFContextToFile(filePath,CGRectZero,nil) 
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,0,850,1100),nil) 
self.drawBackground() 
self.drawText() 
UIGraphicsEndPDFContext() 

} 

func drawBackground() { 
    let context: CGContextRef = UIGraphicsGetCurrentContext()! 
    let rect: CGRect = CGRectMake(0,0,pageSize!.width,pageSize!.height) 
    CGContextSetFillColorWithColor(context,UIColor.whiteColor().CGColor) 
    CGContextFillRect(context,rect) 
} 

func drawText() { 
    var context: CGContextRef = UIGraphicsGetCurrentContext()! 
    CGContextSetFillColorWithColor(context,UIColor.blackColor().CGColor) 
    var textRect: CGRect = CGRectMake(0,0,[[self myTextView]frame].size.with, self.myTextView.frame.size.height) 
    var myString: String = self.myTextView.text! 
    myString.drawInRect(textRect) 
} 

Meine Fehler sind die folgenden Zeilen:

var path: [ANYOBJECT] = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, true)

Ich erhalte den Fehler "Verwendung der unaufgelösten Kennung"

var TextRect: CGRect = CGRectMake (0,0, [[self myTextView] frame] .size.with, self.myTextView.frame.size.height)

Hier bin ich immer "erwarten Separator"

Vielen Dank im Voraus.

Antwort

2

Ihre Fehler haben wenig mit PDF-Erstellung zu tun und sind mit Swift-Syntax verwandt.

  1. Die Parameter, die das Verzeichnis angeben, werden in Swift als enum importiert. Also für das Verzeichnis, sollte Ihre Eingabe ein Fall von NSSearchPathDirectory sein, wie NSSearchPathDirectory.DocumentDirectory (Oder kürzer .DocumentDirectory). NSSearchPathDomainMask ist ein struct mit statischen Konstanten, so wird es wie ein struct behandelt. Zum Beispiel NSSearchPathDomainMask.UserDomainMask (oder genauer gesagt .UserDomainMask).
  2. Ihr zweiter Parameter ist nicht Swift-Syntax. Versuchen:

    var textRect = CGRect(0,0,self.myTextView.frame.size.width, self.myTextView.frame.size.height)

+0

In meiner drawText Funktion in der letzten Zeile ** myString.drawInRect (TextRect) ** Ich erhalte Fehler ** Kann nicht konvertieren Werte vom Typ 'CGRect' zu erwarteten Argumenttyp * *. – mogren3000

+0

Wie lautet der erwartete Argumenttyp? Wenn dies nicht der Fall ist, löschen Sie diese Zeile und geben Sie sie erneut ein. Lassen Sie die Funktion drawInRect jedoch automatisch vervollständigen und sehen Sie, was der Parameterplatzhalter sagt. –