Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用领域、Swift保存不同类别_Ios_Swift_Realm_Realm Mobile Platform - Fatal编程技术网

Ios 使用领域、Swift保存不同类别

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

我正在做一个金融应用程序。我正在用realm保存数据,但有一件事我不明白。用户输入后,他花了多少钱,他可以选择一个类别:超市、交通和其他。所以问题是如何按类别保存用户的数据。RealmModel:

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")