Ios 使用领域、Swift保存不同类别
我正在做一个金融应用程序。我正在用realm保存数据,但有一件事我不明白。用户输入后,他花了多少钱,他可以选择一个类别:超市、交通和其他。所以问题是如何按类别保存用户的数据。RealmModel:Ios 使用领域、Swift保存不同类别,ios,swift,realm,realm-mobile-platform,Ios,Swift,Realm,Realm Mobile Platform,我正在做一个金融应用程序。我正在用realm保存数据,但有一件事我不明白。用户输入后,他花了多少钱,他可以选择一个类别:超市、交通和其他。所以问题是如何按类别保存用户的数据。RealmModel: class Items: Object { @objc dynamic var personID = UUID().uuidString @objc dynamic var categoryAmount = "" @objc dynamic var cate
class Items: Object {
@objc dynamic var personID = UUID().uuidString
@objc dynamic var categoryAmount = ""
@objc dynamic var categoryName = ""
override static func primaryKey() -> String? {
return "personID"
}
}
按钮:
@IBAction func supermarketBTN(_ sender: Any) {
RealmModel.shared.setAmount(newItem: "\((Double(exileAmount?.categoryAmount ?? "" ) ?? 0) + (Double(self.amountTF.text ?? "") ?? 0))")
self.exileAmount = RealmModel.shared.getAmount()
delegate?.updateAmount(amount: self.amountTF.text ?? "")
dismiss(animated: true, completion: nil)
}
如何使用categoryName按类别保存数据?有100种不同的方法。让我在高层次上提出一种可能性 第一个问题是更改对象的结构方式。你需要两个;一个用于存储用户,另一个用于存储他们的类别选择和花费金额
class UserClass: Object {
@objc dynamic var userId = "" //however you want to define id's
@objc dynamic var userName = ""
}
然后
class SpentMoneyClass: Object {
@objc dynamic var _id = UUID().uuidString
@objc dynamic var category = ""
@objc dynamic var byUserId = ""
@objc dynamic var amount = 0.0
}
您的数据库将包含用户,每个用户对象都有一个userId。当用户花钱时,创建一个新的SpentMoneyClass并填写属性——比如用户Artim花钱旅游
let spend = SpentMoneyClass()
spend.category = "Travel"
spend.byUserId = artimUser.userId
spend.amount = 100.00
将对象写入领域
此结构使您能够查询Artim花费的所有费用、所有用户花费的所有差旅费用,以及Artim花费的所有差旅费用或特定花费金额的更精确查询-您可以利用聚合函数。求和以获得总计非常简单:
let travelTotal: Double = realm.object(SpentMoneyClass.self)
.filter("byUserId == x and category == 'Travel'")
.sum(ofProperty: "amount")
给出Artim在旅行上的总花费(x=Artims用户id)
*注意我遗漏了MongoDB领域所需的主键和_id属性,以保持长度较短
let travelTotal: Double = realm.object(SpentMoneyClass.self)
.filter("byUserId == x and category == 'Travel'")
.sum(ofProperty: "amount")