2015-03-05 18 views
7

Ich habe die Syntax a gaillion mal hier auf GitHub, parse.com & woanders, ohne Glück überprüft. Das Problem ist, wenn ich saveInBackgroundWithBlock für PFObject bin Aufruf ich die folgende Fehlermeldung erhalten:Kann 'saveInBackgroundWithBlock' nicht aufrufen

Cannot invoke 'saveInBackgroundWithBlock' with an argument list of type '((Bool, NSError) -> Void)'

ich auf Xcode bin 6.3 Beta 2. Alle Rahmenbedingungen für das Projekt geladen werden (einschließlich Schrauben & Parse, aber nicht zur Verfügung gestellt von parse.com ParseCrashReporting & ParseUI), <Parse/Parse.h> & sogar <Bolts/Bolts.h> werden über den Bridge-Header gebracht.

var score = PFObject(className: "score") 
    score.setObject("Rob", forKey: "name") 
    score.setObject(95, forKey: "scoreNumber") 
    score.saveInBackgroundWithBlock { 
     (success: Bool!, error: NSError) -> Void in 
     if success == true { 
      println("Score created with ID: \(score.objectId)") 
     } else { 
      println(error) 
     } 
    } 

Irgendwelche Gedanken?

Antwort

7

In Swift 1.2 die Deklaration von .saveInBackgroundWithBlock sollte wie folgt aussehen:

Void saveInBackgroundWithBlock(block: PFBooleanResultBlock?(Bool, NSError?) -> Void) 

So soll es wurde wie folgt:

score.saveInBackgroundWithBlock { 
     (success: Bool, error: NSError?) -> Void in 
+0

Dies nur gespeichert meine Speck, danke! :) – Alex

+2

Xcode 7 Beta 5 zeigt Fehler: 'Kann nicht aufrufen ' signUpInBackgroundWithBlock 'mit einer Argumentliste vom Typ' ((Bool, NSError?) -> Void) '' – orkenstein

9

Der error Parameter soll ein implizit ungeöffneten optional sein, aber nicht die success ein:

(success: Bool, error: NSError!) -> Void in 
      ^   ^

jedoch, wenn Sie den Typ aus irgendeinem Grund angeben müssen, empfehle ich Ihnen den Verschluss zu verwenden, einfach als :

(success, error) in 

weniger anfällig für Typ Deklarationsfehler.

+0

Danke, Sehr geehrter Herr, zeigen Sie mich in der richtigen Richtung ! Dein Ratschlag war jedoch nicht genau richtig, siehe meine Antwort unten. –

+0

Der einzige Unterschied ist das implizit unverpackte Optional, das Sie immer als normal optional deklarieren können. Hast du deswegen einen Fehler bekommen? – Antonio

+0

Ja, ich bekomme einen Fehler, wenn ich etwas davon ändere. Doch "(Erfolg, Fehler) in" scheint zu funktionieren, aber das wollte ich nicht. –

1

Das Verfahren will die success und error wie diese gesetzt Variablen mit dem ! auf dem error:

(success: Bool, error: NSError!) 
      ^   ^

Aber Sie die ! an die falsche Variable gesetzt haben:

(success: Bool!, error: NSError) 

Wie Sie siehe hier:

enter image description here

+0

Danke für das Zeigen mir in die richtige Richtung, bitte siehe http://Stackoverflow.com/a/28898010/4327488 –

Verwandte Themen