Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios RealmSwift:void函数中意外的非void返回值_Ios_Swift2_Realm - Fatal编程技术网

Ios RealmSwift: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,然后传递给我的私有var令牌和用户id,但是我一直被抛出这个错误

void函数中意外的非void返回值

返回特定的.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
更改为可选