2016-05-26 10 views
1

Я пытаюсь запросить name поле из моей базы данных Realm, но я получаю выброшен эту ошибкуTrouble запрашивая из области: Инициализатор ошибка

Инициализатора для условной привязки должны иметь факультативный тип, а не «Результаты < (частностей)>»(он же 'Результаты')

Это мой код

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. После этого, вам нужно на самом деле получить доступ к собственности вы после (т.е. name или email)

Так, например:

func getEmail() { 

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

Позвольте мне знать, если вам нужны дополнительные разъяснения. :)

+0

Привет @TiM Я получаю сообщение об ошибке «неожиданное непустое возвращаемое значение в функции void» на моей обратной линии. Вы знаете, как я могу это исправить? – user3803747

 Смежные вопросы

  • Нет связанных вопросов^_^