RealmSwift:void函数中出现意外的非void返回值

时间:2016-05-27 00:54:54

标签: ios swift2 realm

我正在尝试从我的realm数据库中查询token和user_id,然后传递给我的私有var令牌和userId,但我不断抛出此错误

  

void函数中出现意外的非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)
    }

}
}

所以我想知道两件事:

  • 为什么我会被抛出这个错误?
  • 有更好的方法吗? (即更有效的查询方式)

1 个答案:

答案 0 :(得分:2)

您的功能定义为func getId (),这意味着它不会返回值。然后你尝试在return particular.id返回一些东西。您需要将函数定义更改为func getId() -> Int?,然后添加return nil作为获取失败时的最后一行(与guard语句相同)。

当然,在nil中调用getId()或将var userId更改为可选时,您还必须处理userId值。