2016-05-27 8 views
1

Ich versuche, für das Token und User_id aus meiner Reich-Datenbank abzufragen und dann auf meinem privaten var Token und userId passiert aber ich erhalte immer diese Fehlermeldung geworfenRealmSwift: Unerwartete nicht-void als Rückgabewert in Leerer Funktion

unerwartete nicht-void als Rückgabewert in Leerer Funktion

bei return particular.id und

Wert kann nicht vom Typ zuordnen '()' eingeben 'Int'

bei _userId = getId()

Dies ist mein Code:

import Foundation 
import RealmSwift 

class Users { 
    private var _userId: Int! 
    private var _token: String! 

var userId: Int { 
    _userId = getId() 
    return _userId 
} 

func getId() { 

    guard let userName = Data.sharedInstance.userName else { print("Empty username"); return } 

    do { 
     let realm = try Realm() 
     if let particular = realm.objects(Particulars).filter("username == '\(userName)'").first { 
      return particular.id 
     } 

    } catch let error as NSError { 
     // handle error 
     print(error) 
    } 

} 
} 

So gibt es zwei Dinge, die ich wissen will:

  • Warum bin ich diesen Fehler geworfen?
  • Gibt es einen besseren Weg? (I.e. effizientere Art der Abfrage)

Antwort

2

Ihre Funktion ist definiert als func getId(), was bedeutet, dass sie keinen Wert zurückgibt. Dann versuchen Sie etwas unter return particular.id zurückzugeben. Sie müssen Ihre Funktionsdefinition in func getId() -> Int? ändern und dann auch eine return nil als letzte Zeile hinzufügen, wenn Ihr Abruf fehlschlägt (dasselbe für Ihre guard-Anweisung).

Natürlich werden Sie auch, dass nil Wert handhaben müssen, wenn getId() im var userId Aufruf oder userId optional auch sein ändern.