2016-05-26 38 views
1

我想从我的境界数据库查询name场,但我不断收到抛出这个错误麻烦从境界查询:初始化器错误

初始化器有条件的结合必须有可选的类型,而不是“结果<(详情)>”(又名 '结果')

这是我的代码

import Foundation 
import Foundation 
import RealmSwift 

class Users { 
private var _name: String! 
private var _email: String! 
private var _userId: Int! 
private var _profilePicture: String! 
private var _username: String! 

let realm = try! Realm() 

var name: String { 
    _name = getName() 
    return _name 
} 

var email: String { 
    _email = getEmail() 
    return _email 
} 

func getName() { 

    guard let userName = Data.sharedInstance.userName else { print("Empty username"); return } 

    if let name = realm.objects(Particulars).filter("username == '\(userName)'"){ 
     return name 
    } 

} 

func getEmail() { 

    guard let userName = Data.sharedInstance.userName else { print("Empty username"); return } 

    if let email = realm.objects(Particulars).filter("username == '\(userName)'"){ 
     return email 
    } 

} 

realm query errors

这是我的境界数据库:

realm table

回答

0

两件事情:

1)Realm.objects()返回一个Results对象(相同的阵列),其含有的类型的零个或多个对象你搜索。如果您只想获取该查询返回的第一个对象,请在末尾添加.first,然后在.filter之后添加。

2)获得第一个对象后,它仍然是Particulars类型。在此之后,你需要后(即nameemail

实际访问你的财产因此,例如:

func getEmail() { 

    if let particular = realm.objects(Particulars).filter("username == '\(userName)'").first { 
     return particular.email 
    } 
} 

让我知道如果你需要任何更多的澄清。 :)

+0

嗨@TiM我在'return function'中得到'void function'中的'意外的非void返回值'错误。你知道我该如何修复它吗? – user3803747