我正在尝试从我的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)
}
}
}
所以我想知道两件事:
答案 0 :(得分:2)
您的功能定义为func getId ()
,这意味着它不会返回值。然后你尝试在return particular.id
返回一些东西。您需要将函数定义更改为func getId() -> Int?
,然后添加return nil
作为获取失败时的最后一行(与guard
语句相同)。
当然,在nil
中调用getId()
或将var userId
更改为可选时,您还必须处理userId
值。