У меня есть tableView для пользователя, чтобы увидеть транзакцию selectedAccount. В моей транзакции будет отображаться сумма транзакции и остаток после транзакции, произведенной с объектами области. Я ожидаю, что в каждой ячейке будет баланс после транзакции, отображаемой в UILabel. И я не мог понять, какие логики c необходимы для того, чтобы это сработало.
class Account : Object {
var ofTransactions = List<Transaction>()
var direction: Int16 = 0
@objc dynamic var name : String = ""
@objc dynamic var info : String = ""
@objc dynamic var balance : String = ""
//MARK: - Transaction Section
class Transaction : Object {
///Child of Transaction
var parentAccount = LinkingObjects(fromType: Account.self, property: "ofTransactions")
@objc dynamic var categoryType : Category?
@objc dynamic var amount : String = ""
@objc dynamic var date : Date?
}
//MARK: - Transaction Category Section
enum CategoryType : Int, CaseIterable {
case income = 0
case expense = 1
case openingBalance = 2
init?(id : Int) {
if id < CategoryType.allCases.count {
self = CategoryType.allCases[id]
} else {
return nil
}
}
}
class Category : Object {
@objc dynamic var icon : String = ""
@objc dynamic var categoryTypeID : Int = CategoryType.income.rawValue
@objc dynamic var name : String = ""
@objc dynamic var categoryID : Int = 0
// Example
tableViewCell At indexpath.
Row 0 Information
CategoryType : Income
Amount : + 1000
Balance : = 1000
Row 1 Information
CategoryType : Expense
Amount : -500
Balance : = 500 (row1 - row0)
Row 2 Information
CategoryType : Expense
Amount : -200
Balance : = 300 (row2 - row1)
// Outlets
@IBOutlet weak var categoryLabel: UILabel!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var amountTF: CurrencyField!
//This is not under realm Object Transaction()
@IBOutlet weak var balanceLabel: UILabel!
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TransactionCell", for: indexPath) as! TransactionTableViewCell
if let transCell = getTransactions?[indexPath.row] {
cell.categoryLabel.text = transCell.categoryType?.name
cell.dateLabel.text = transCell.date?.toMMMdString()
//Implementation of currency format to amount TextField
cell.amountTF.text = transCell.amount
cell.amountTF.locale = Locale(identifier: selectedAccount.currency!.localeId)
/*
let indexAccount0 = getTransactions[indexPath.row].amount
let indexAccount1 = getTransactions[indexPath.row + 1].amount
print("indexAccount 0 : \(indexAccount0)")
print("indexAccount 1 : \(indexAccount1)")
let sum1 = Double(indexAccount0)
let sum2 = Double(indexAccount1)
let totalSum = sum1! + sum2!
print("sum1 : \(sum1)")
print("sum2 : \(sum2)")
print("totalsum : \(totalSum)")
*/