2016-05-26 39 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