Ios RealmSwift:void函数中意外的非void返回值
我试图从我的领域数据库中查询令牌和用户id,然后传递给我的私有var令牌和用户id,但是我一直被抛出这个错误 void函数中意外的非void返回值 在Ios RealmSwift:void函数中意外的非void返回值,ios,swift2,realm,Ios,Swift2,Realm,我试图从我的领域数据库中查询令牌和用户id,然后传递给我的私有var令牌和用户id,但是我一直被抛出这个错误 void函数中意外的非void返回值 在返回特定的.id和 无法将类型“()”的值分配给类型“Int!” 在\u userId=getId() 这是我的代码: import Foundation import RealmSwift class Users { private var _userId: Int! private var _token: String! var u
返回特定的.id
和
无法将类型“()”的值分配给类型“Int!”
在\u 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)
}
}
}
所以我想知道两件事:
- 为什么我会被抛出这个错误
- 有没有更好的办法?(即更有效的查询方式)
func getId()
,这意味着它不返回值。然后尝试在return special.id
处返回一些内容。您需要将函数定义更改为func getId()->Int?
,然后还需要添加一个return nil
,作为获取失败时的最后一行(与guard
语句相同)
当然,在var userId
中调用getId()
时,您还必须处理该nil
值,或者将userId
更改为可选