2016-05-27 17 views
1

私は自分のレルムのデータベースからのトークンとのuser_idを照会し、その後、私のプライベートVARトークンとのuserIdに渡すしようとしているが、私はこのエラーにRealmSwift:予期しない非空の戻り値void型関数で

を投げ続けます空の関数で

予期しない非空の戻り値

return particular.id

入力する「)(」型の値を割り当てることができません「のIntを!」 _userId = getId()

これは私のコードです:

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) 
    } 

} 
} 

だから私は知りたい二つのものがあります。

  • なぜ私はこのエラーがスローされるのですが?
  • これを行うより良い方法はありますか? (より効率的な問い合わせ方法)

答えて

2

あなたの関数は、値を返さないことを意味するfunc getId()と定義されています。次に、return particular.idで何かを試してみてください。関数の定義をfunc getId() -> Int?に変更し、フェッチが失敗したときの最後の行にreturn nilを追加する必要があります(guard文の場合も同じです)。もちろん

、あなたはまた、var userIdgetId()を呼び出すときにそのnil値を処理する必要があり、または同様のオプションであることをuserIdを変更します。

関連する問題