从领域查询时遇到问题:初始化程序错误
Trouble querying from realm: Initialiser error
我正在尝试从我的 Realm 数据库中查询 name
字段,但我一直收到此错误
Initialiser for conditional binding must have Optional type, not 'Results<(Particulars)>' (aka 'Results')
这是我的代码
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
}
}
这是我的领域数据库:
两件事:
1) Realm.objects()
returns Results
对象(与数组相同)包含零个或多个您搜索类型的对象。如果只想获取从该查询返回的第一个对象,请在末尾添加 .first
,在 .filter
.
之后
2) 得到第一个对象后,它仍然是Particulars
类型。之后,您需要实际访问您之后的 属性(即 name
或 email
)
例如:
func getEmail() {
if let particular = realm.objects(Particulars).filter("username == '\(userName)'").first {
return particular.email
}
}
如果您需要更多说明,请告诉我。 :)
我正在尝试从我的 Realm 数据库中查询 name
字段,但我一直收到此错误
Initialiser for conditional binding must have Optional type, not 'Results<(Particulars)>' (aka 'Results')
这是我的代码
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
}
}
这是我的领域数据库:
两件事:
1) Realm.objects()
returns Results
对象(与数组相同)包含零个或多个您搜索类型的对象。如果只想获取从该查询返回的第一个对象,请在末尾添加 .first
,在 .filter
.
2) 得到第一个对象后,它仍然是Particulars
类型。之后,您需要实际访问您之后的 属性(即 name
或 email
)
例如:
func getEmail() {
if let particular = realm.objects(Particulars).filter("username == '\(userName)'").first {
return particular.email
}
}
如果您需要更多说明,请告诉我。 :)