2016-08-04 72 views
1

ich meine eigenen Parsing-Server Tagrunnig und alles funktioniert gut, aber ich ein PFFile zu einem UIImage nicht umwandeln kann, dann ist dies der Fehler es bei mir wirft:Parse Last Bilder Swift 3.0

Cannot convert value of type '(NSData?, NSError?) -> Void' to expected argument type PFDataResultBlock'

Hier ist der Code, den ich verwendet habe:

var imageFromParse = object.object(forKey: "ProfilePicture") as! PFFile! 
         imageFromParse!.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in 
          var image: UIImage! = UIImage(data: imageData!)! 
         }) 

Und all dies verwendet, um perfekt in Swift 2.3 zu arbeiten. danke für die Hilfe.

Antwort

1

Ich habe einige Tests auf schnellen 3,0 und der folgende Code funktioniert für mich:

let query = PFQuery(className: "FileTest") 

    query.findObjectsInBackgroundWithBlock { 
     (objects: [PFObject]?, error: NSError?) -> Void in 

     let firstObject = objects?.first as PFObject! 
     let objectFile = firstObject.objectForKey("file") as! PFFile 
     objectFile.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in 
      let image = UIImage(data: imageData!) 
      if image != nil { 
       self.imageOutlet.image = image 
      } 

     }) 
    } 

In diesem Code i alle Filetest Sammlung zuerst holen, dann nehme ich das erste Objekt (nur für Test Natürlich) und dann lese ich die Datei. Bitte beachten Sie, dass ich eine objectForKey verwenden, um die PFFile, die unter der Testspalte vorhanden sind. Nachdem ich die Datei habe, rufe ich getDataInBackground, um die Daten zu erhalten, erstellen Sie UIImage aus den Daten und aktualisieren Sie meine imageView Alles funktioniert wie erwartet .. versuchen Sie, diesen Code auszuführen und sehen, ob es für Sie funktioniert.

+0

Es erlaubt mir nicht einmal 'findObjectsInBackgroundWithBlock' zu verwenden xcode ändert es in' findObjectsInBackground' Es ist wirklich merkwürdig, verwenden Sie das Latest Parse SDK? –

+0

Ja, ich habe parse über cocoapods –

+0

komisch hinzugefügt, weil es umbenannt wurde in 'findObjectsInBackground (block:)', aber ich kann nichts in der Dokumentation finden, um damit umzugehen ... –

2

Verwenden Data und Error statt NSData und NSError

3

Swift 3.0:

if let imageFromParse = user.object(forKey: "ProfilePicture") as? PFFile { 
    imageFromParse.getDataInBackground(block: { 
     (data: Data?, error: Error?) in 

     if error == nil { 

     } 
    }) 

} 

Haupt-Updates:

(Daten: NSData, Fehler: NSError) in

aktualisiert wurde:

(Daten: Daten, Fehler: Fehler?) In

Und:

Swift 3 macht alle Etiketten erforderlich, wenn Sie nichts anderes angeben, was bedeutet, die Methodennamen geben ihre Parameter nicht mehr detailliert an. In der Praxis bedeutet dies oft, dass der letzte Teil des Methodennamens in den Namen des ersten Parameters verschoben wird. Weitere Informationen finden Sie unter: https://www.hackingwithswift.com/swift3

+1

Ich fand, dass die Verwendung der verkürzten Version der Signatur viel einfacher ist: "(Daten, Fehler) in". – weePee