2016-07-05 6 views
1

ich ein Versprechen mit null erfüllen erfüllen wollen, aber ich bekomme Fehlermeldung, die ich hier kann nicht mein CodeWie nil versprechen rasche

public static func getCurrentDevice() -> Promise<Device>{ 
    if let identity:[String:AnyObject] = auth?.get("identity") as! [String:AnyObject] { 
     if let uuididentity = identity["uuid"]{ 
     return Promise { fulfill, reject in 
      Alamofire.request(Router.getDevice(uuididentity as! String)) 
       .responseObject { (response: Response<Device, NSError>) in 
        switch response.result{ 
        case .Success(let data): 
         fulfill(data) 
        case .Failure(let error): 
         return reject(error) 
        } 
      } 
     } 
    } 
} 
return Promise { fulfill, reject in 
     fulfill(nil) 
    } 
} 

ich Compiler-Fehler erhalten nicht Initialisierer für Typ ‚Versprechen < aufrufen >‘mit einem Argument Liste vom Typ '((, _) -> _)'

Antwort

2

Wenn das Versprechen keinen Wert zurückgeben sollten Sie () aka Void verwenden:

return Promise { fulfill, reject in 
    fulfill(()) 
} 

Wenn dies nicht funktioniert (ich habe es nicht getestet) Sie könnten es versuchen, mit Anmerkungen versehen:

return Promise<()> { fulfill, reject in 
    fulfill(()) 
} 

(Beachten Sie, dass () der einzige Wert vom Typ () aka Void)

+0

Dank möchte ich ausdrücklich null zurückkehren kann ich das tun ?, ich versuche dies auch und es funktioniert nicht –

+0

'nil' ist kein gültiger Typ, wenn Sie nichts zurückgeben soll nur eine bestimmte, ohne Geben Sie '') 'ein. Wenn du einen optionalen Typ brauchst, benutze 'Int?' Oder was auch immer. – Kametrixom

+0

Ich muss das Versprechen erfüllen und nil zurückgeben, ich habe den Code, den du gepostet hast, versucht und es funktioniert nicht Ich habe Compiler-Probleme. Irgendeine andere Idee, wie man das macht? –

0

Hier gehts. Das Fragezeichen macht es für Sie bei der Rückkehr der Methode.

public static func getCurrentDevice() -> Promise<Device?> { 
     //... logic here 
     let isDeviceEmpty: Bool 

     if isDeviceEmpty { 
      fulfill(nil) 
     } else { 
      fulfill(device) 
     } 
    } 
Verwandte Themen