如何使用 Realm 存储字符串枚举

How to store String Enums with Realm

我无法在 Realm 中将数据保存为枚举。当我跟踪变量的状态并保存时,旧值仍然存在,而不是新值。我做错了什么?

我用了一个setter和一个getter,还是没有解决问题

import RealmSwift

class Transaction: Object {

var accounting: Accounting = .income
@objc dynamic var amount = 0
@objc dynamic var date = ""
@objc dynamic var note = ""

private var privateCategory: String = Category.noCategories.rawValue
var category: Category {
    get { return Category(rawValue: privateCategory)! }
    set { privateCategory = newValue.rawValue }
  } 
}

enum Category: String {
   case noCategories = "No сategories"
   case food = "Food"
   case cafesAndRestaurants = "Cafes And Restaurants"
   case manufacturedGoods = "Manufactured Goods"
   case forceMajeure = "Force Majeure"
   case entertainment = "Entertainment"
}

当我尝试保存 属性 时,Сategory 默认保存 ("No categories")

let transactionOne = Transaction()
    transactionOne.accounting = .consuption
    transactionOne.amount = 250
    transactionOne.category = .food

transaction privateCategory String "No categories"

Realm guide中的所有示例可以看出,您想要持久化的字符串属性被标记为@objc dynamic。所以你也应该将 privateCategory 标记为 @objc dynamic:

@objc dynamic var privateCategory: String = Category.noCategories.rawValue