我使用Realm为我的iOS移动应用创建了数据库,用Swift编写。 我正试图找到在DB
中查找匹配用户名和密码的方法这就是我目前所做的,尝试过滤并获取具有匹配用户名的对象 我试图从检索到的对象
解决称为密码的属性/密钥@IBAction func SignInCheck(sender: AnyObject) {
let realm = try! Realm()
var currentlogin = realm.objects(UserRecords).filter("name = LogUsernameTextField.text")
//this line causes SIGABRT to be thrown
if currentlogin.password == LogPasswordTextField.text { //This is the incorrectly addressed line
....
}
}
问题可能是我不理解对象如何以正确的方式工作,也不知道正确的语法来解决我想要的问题。
我怀疑它是以结果的形式,但我仍然无法找到解决所需信息的方法。
以下是您的信息的表格结构
class UserRecords: Object {
dynamic var username: String = ""
dynamic var password: String = ""
dynamic var latitude: Float = 0
dynamic var longtitude: Float = 0
}
我愿意提供更好的解决方案以及在表格中查找/匹配密码的方法,如果有的话。
提前致谢
答案 0 :(得分:1)
您在name
字符串中使用名为filter
的属性,但在UserRecords
类中,该属性称为username
。您还必须以不同方式创建过滤器字符串:
var currentlogin = realm.objects(UserRecords).filter("username = '\(LogUsernameTextField.text!)'")
另请注意,filter方法返回与过滤器匹配的UserRecord
个对象的列表,而不是单个对象。因此调用if currentlogin.password == ...
会导致错误。
该列表只有1个项目(因为用户名是唯一的),但它仍然是一个列表。因此,要访问UserRecord
对象,您可以调用first
:
var currentlogin = realm.objects(UserRecords).filter("name = LogUsernameTextField.text!").first
text
的{{1}}属性也返回一个Optional,所以你必须打开它。