如何在 Realm Swift 中处理检索到的对象的键?
How to address key of retrieved object, in Realm, Swift?
我使用 Realm 为我的 iOS 移动应用程序创建了数据库,使用 Swift 编写。
我正在尝试寻找在 DB
中查找匹配的用户名和密码的方法
这是我目前拥有的,正在尝试过滤并获取具有匹配用户名的对象
我正在尝试从检索到的对象
中解决 attribute/key 调用的密码
@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
....
}
}
问题可能是我不了解对象如何以正确的方式工作,也不知道正确的语法来解决我想要的问题。
我怀疑它是结果形式的,但我仍然无法找到解决所需信息的方法。
这是供您参考的 table 结构
class UserRecords: Object {
dynamic var username: String = ""
dynamic var password: String = ""
dynamic var latitude: Float = 0
dynamic var longtitude: Float = 0
}
我愿意接受更好的解决方案和在 table 中查看 up/matching 密码的建议,如果有的话。
提前致谢
您在 filter
字符串中使用名为 name
的 属性,但在 UserRecords
class 中 属性 称为 username
。您还必须以不同方式创建过滤器字符串:
var currentlogin = realm.objects(UserRecords).filter("username = '\(LogUsernameTextField.text!)'")
另请注意,过滤方法 returns 是 列表 的 UserRecord
个匹配过滤器的对象,而不是单个对象。所以调用 if currentlogin.password == ...
会导致错误。
该列表只有一项(因为用户名是唯一的)但它仍然是一个列表。因此,要访问 UserRecord
对象,您可以调用 first
:
var currentlogin = realm.objects(UserRecords).filter("name = LogUsernameTextField.text!").first
UITextField
returns 的 text
属性 也是可选的,所以你必须打开它。
我使用 Realm 为我的 iOS 移动应用程序创建了数据库,使用 Swift 编写。 我正在尝试寻找在 DB
中查找匹配的用户名和密码的方法这是我目前拥有的,正在尝试过滤并获取具有匹配用户名的对象 我正在尝试从检索到的对象
中解决 attribute/key 调用的密码@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
....
}
}
问题可能是我不了解对象如何以正确的方式工作,也不知道正确的语法来解决我想要的问题。
我怀疑它是结果形式的,但我仍然无法找到解决所需信息的方法。
这是供您参考的 table 结构
class UserRecords: Object {
dynamic var username: String = ""
dynamic var password: String = ""
dynamic var latitude: Float = 0
dynamic var longtitude: Float = 0
}
我愿意接受更好的解决方案和在 table 中查看 up/matching 密码的建议,如果有的话。
提前致谢
您在 filter
字符串中使用名为 name
的 属性,但在 UserRecords
class 中 属性 称为 username
。您还必须以不同方式创建过滤器字符串:
var currentlogin = realm.objects(UserRecords).filter("username = '\(LogUsernameTextField.text!)'")
另请注意,过滤方法 returns 是 列表 的 UserRecord
个匹配过滤器的对象,而不是单个对象。所以调用 if currentlogin.password == ...
会导致错误。
该列表只有一项(因为用户名是唯一的)但它仍然是一个列表。因此,要访问 UserRecord
对象,您可以调用 first
:
var currentlogin = realm.objects(UserRecords).filter("name = LogUsernameTextField.text!").first
UITextField
returns 的 text
属性 也是可选的,所以你必须打开它。