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 个新属性:billingCycleInt
和 billingCycleString
。这是最好的方法还是有其他方法?
那最好了。 Core Data 在内部仍然非常面向 Objective-C。因此它不知道 Swift 像元组这样的主义。还有其他可行的方法,比如尝试让 NSCoding
为这个 属性 工作,但它们都会复杂得多。
如果您想保留元组,您可以考虑添加您提到的两个属性,然后将元组转换为计算的 属性 以查找其他两个的值。然后你可以在方便的地方使用 Swift 元组,但仍然可以使用核心数据。
我正在将 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 个新属性:billingCycleInt
和 billingCycleString
。这是最好的方法还是有其他方法?
那最好了。 Core Data 在内部仍然非常面向 Objective-C。因此它不知道 Swift 像元组这样的主义。还有其他可行的方法,比如尝试让 NSCoding
为这个 属性 工作,但它们都会复杂得多。
如果您想保留元组,您可以考虑添加您提到的两个属性,然后将元组转换为计算的 属性 以查找其他两个的值。然后你可以在方便的地方使用 Swift 元组,但仍然可以使用核心数据。