iOS核心数据——如何保存元组属性

iOS Core Data - how to save Tuple property

我正在将 Core Data 添加到我的应用程序中,从 struct 开始,如下所示:

struct Expense: Equatable{
    let id: String = UUID().uuidString
    var name: String
    var description: String
    var category: String
    var nextBill: Date
    var billingCycle: (Int, String)
    var currency: Currency?
    var price: Decimal
}

阅读文档看起来我需要将其转换为 class

@objc(Expense)
public class Expense: NSManagedObject {
    let id: String = UUID().uuidString
    var name: String
    var description: String
    var category: String
    var nextBill: Date
    var billingCycle: (Int, String)
    var currency: Currency?
    var price: Decimal
}

然而,这似乎与 billingCycle 属性 有问题,它是一个元组值(值示例:每周 1 个,每月 1 个,每年 3 个)

我正在考虑将 billingCycle 属性 拆分为 2 个新属性:billingCycleIntbillingCycleString。这是最好的方法还是有其他方法?

那最好了。 Core Data 在内部仍然非常面向 Objective-C。因此它不知道 Swift 像元组这样的主义。还有其他可行的方法,比如尝试让 NSCoding 为这个 属性 工作,但它们都会复杂得多。

如果您想保留元组,您可以考虑添加您提到的两个属性,然后将元组转换为计算的 属性 以查找其他两个的值。然后你可以在方便的地方使用 Swift 元组,但仍然可以使用核心数据。