gpt4 book ai didi

ios - 将对象添加到单个 Realm 文件

转载 作者:行者123 更新时间:2023-11-30 12:54:54 25 4
gpt4 key购买 nike

在开始之前,先为大家介绍一下背景知识,以便您可能的答案不会超出我的理解水平:1. 我只是开始学习 swift,并且仍在学习 Realm 和 Xcode 的细节。2. 我唯一的 OOP 经验是使用 java,而且水平很低。

这是我的问题:

我正在尝试使单个 Realm 文件包含“用户配置文件”数据的完整列表(即姓名、年龄、电子邮件)。我尝试通过允许 IBAction 按钮将对象保存到 Realm 文件中来实现此目的,如下所示

@IBAction func signUpButton(_ sender: UIButton) {

let realm = try! Realm()



try! realm.write {

user.userName = userNameTextField.text!
user.passWord = passWordTextField.text!
user.email = emailTextField.text!
user.name = fullNameTextField.text!
user.age = ageTextField.text!

profile.person.append(user)


realm.add(profile)

}
}

这里唯一的问题是它没有添加对象,而是更新之前创建的对象,谁能告诉我如何使用 IBAction 按钮来完成此操作?

最佳答案

如果对象已添加到 Realm 文件中,那么您可以通过打开写入事务并简单地修改其中的属性来更改其属性。

let realm = try! Realm()

let newUser = User()
newUser.userName = userNameTextField.text!

// Add to Realm for the first time
try! realm.write {
realm.add(newUser)
}

// Update its property at a later time
try! realm.write {
newUser.userName = userNameTextField.text!
}

如果之前已经添加了这些对象,则无需再次调用 realm.addprofile.person.append(user)

我不确定您的示例代码中的userprofile来自哪里。由于该方法内没有 let user = User() ,我假设您在 View Controller 类的其他位置创建它们的单个副本。

如果 profile 已添加到 Realm,则不应再次调用 realm.add(profile),因为这将添加第二个副本(并且每次调用append可能不会中断,但不推荐)。

要确定 profile 是否已在 Realm 文件中,您可以使用 profile.realm != nil 进行检查。要检查用户是否已属于个人资料,您可以使用Realm的反向关系功能。

class User: Object {
dynamic var userName = ""
dynamic var password = ""
dynamic var email = ""
dynamic var name = ""
dynamic var age = ""

let profile = LinkingObjects(fromType: Profile.self, property: "person")
}

关于ios - 将对象添加到单个 Realm 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com