gpt4 book ai didi

swift - 如何在 Realm 中仅保存一个类实例

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

因此,我不想使用用户默认值,而是想使用 Realm 保留一些设置。

我已经为设置创建了一个类 进口基金会导入 RealmSwift

class NutritionSettings: Object {
@objc dynamic var calories: Int = 0
@objc dynamic var proteins: Int = 0
@objc dynamic var carbohydrates: Int = 0
@objc dynamic var fats: Int = 0
}

但是在我的 View Controller 中我不知道如何保存它的一个实例我已经尝试过

let realm = try! Realm()
let settings = NutritionSettings()

do {
try realm.write{
settings.calories = cals!
settings.carbohydrates = carbs!
settings.fats = fats!
settings.proteins = proteins!
}
} catch {
print("error saving settings")
}

因为我知道执行realm.add只会添加另一个 NutritionSettings 对象,这不是我想要的。我无法使用文档澄清任何内容。任何帮助将不胜感激,谢谢。

最佳答案

当我尝试保存用户 session 对象时,我在项目中遇到了类似的问题。如果要保存唯一的对象,请重写primaryKey()类方法并为其设置唯一键。

@objcMembers class NutritionSettings: Object {

static let uniqueKey: String = "NutritionSettings"

dynamic var uniqueKey: String = NutritionSettings.uniqueKey
dynamic var calories: Int = 0

override class func primaryKey() -> String? {
return "uniqueKey"
}
}

然后只需使用唯一 key 即可接收对象。

// Saving

let settings = NutritionSettings()
settings.calories = 100

do {
let realm = try Realm()
try realm.write {
realm.add(settings, update: .modified)
}
} catch {
// Error handling
}

// Reading

var settings: NutritionSettings?

do {
let realm = try Realm()
let key = NutritionSettings.uniqueKey
settings = realm.object(ofType: NutritionSettings.self, forPrimaryKey: key)
} catch {
// Error handling
}

if let settings = settings {
// Do stuff
}

希望它能对某人有所帮助。

关于swift - 如何在 Realm 中仅保存一个类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033018/

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