我刚刚开始编码。我正在使用 Swift 制作一个 iOS 应用程序,即使在应用程序退出时也需要能够存储两个变量。为此,我正在使用 Realm。我可以编写这两个变量,但是当我尝试读取它们时,我无法构建我的项目。
我尝试了很多教程,但每次尝试将它们应用到我的问题时都失败了。
这是我的 Realm 类:
class Info: Object {
dynamic var name = ""
dynamic var gender = ""
}
如何在我的 ViewController 中读取这两个变量的值?
当我尝试读取变量时,我在行上出错
guard let info = realm.objects(Info.self).first else {return}
我的 ViewController:
import UIKit
import RealmSwift
class SettingsViewController: UIViewController {
let realm = try! Realm()
guard let info = realm.objects(Info.self).first else {return}
let name = info.name
let gender = info.gender
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
最佳答案
您可以访问Realm
像这样的变量:
let realm = try! Realm()
guard let info = realm.objects(Info.self).first else {return}
let name = info.name
let gender = info.gender
但是,如果您不打算在存储器上存储更复杂的数据,我建议您只使用 UserDefaults
,对于这样一个简单的任务,它更容易使用。
您还应该更改 « »
适当"
标志,如果你想存储字符串文字。
对于问题的编辑部分:
guard let info = realm.objects(Info.self).first else {return}
必须发生在你的内部 viewDidLoad
功能。您无法访问 realm
,这是你的类的一个实例属性,在你的类被实际初始化之前,因此你得到了错误。如果您需要将信息作为实例属性,请将其初始化为可选项并在 viewDidLoad
中访问它.
第一个选项 - 如果您只需要访问 info
里面viewDidLoad
:
class SettingsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm()
guard let info = realm.objects(Info.self).first else {return}
let name = info.name
let gender = info.gender
}
}
第二个选项 - 如果您需要访问 info
在你的类实例中的任何地方:
class SettingsViewController: UIViewController {
let realm = try! Realm()
var info: Info?
override func viewDidLoad() {
super.viewDidLoad()
info = realm.objects(Info.self).first else {return}
let name = info.name
let gender = info.gender
}
}
如果这是您的初始 View Controller ,将 Realm 声明为实例属性可能会出现问题,因为您的类可能在 application(didFinishLaunchingWithOptions)
之前实例化。函数完成执行,因此你的 realm schema
当您尝试在 SettingsViewController
中访问它时,将无法正确设置.如果是这种情况,只需移动 let realm = try! Realm()
行即可里面viewDidLoad
.
关于ios - 如何读取 iOS 项目中 Realm 变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45382449/