ios - 数组不堆叠Class对象

标签 ios arrays swift

我正在尝试初始化类对象,然后通过委托(delegate)函数将类对象附加到数组。 Delegate Double 来自按钮按下和一些数据。

var expensesArray = [SpendedMoneyObject]()
var delegatedDouble:Double = 0.0

func setExpenses(expensesFromMainView: Double) {
    delegatedDouble = expensesFromMainView
  var  aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble)
    expensesArray += [aSpendedMoneyObject]
    self.tableView.reloadData()   
}

这里的问题是我试图在 TableViewCell 上显示数组,但它根本没有显示,我想主要问题是费用数组值为 1 并且它不是堆叠而是用其他值替换相同的数组。我们很高兴听到您的想法。

编辑: 我尝试了 .append,它仍然相同,TableView func cellForRowAtIndexPath 也没有被调用。

class ExpensesTableViewController: UITableViewController, ExpensesEnteredDelegate{

//MARK : Properties
var expensesArray = [SpendedMoneyObject]()
var delegatedDouble:Double = 0.0

override func viewDidLoad() {
    super.viewDidLoad()

}
func setExpenses(expensesFromMainView: Double) {

    delegatedDouble = expensesFromMainView
  var  aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble)
    expensesArray.append(aSpendedMoneyObject) 
    self.tableView.reloadData()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return expensesArray.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cellIdentifier =  "ExpensesCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! ExpensesTableViewCell
    print("Iam here")
    let expense = expensesArray[indexPath.row]
    let fromDoubleToString = "\(expense.moneySpent)"

    cell.loadItemsToCell(fromDoubleToString, date: expense.date)



    return cell
 }

对象类别:

class SpendedMoneyObject {
var moneySpent: Double
var currentTime = NSDate().toShortTimeString()
var date: String

init(moneySpent: Double) {
    self.date = currentTime
    self.moneySpent = moneySpent

}}

编辑:我现在可以通过从花费按钮函数中移动新的 ViewController 创建来添加多个数组,每次单击按钮时该函数都会创建 newVC。以下是编辑后的代码:

protocol ExpensesEnteredDelegate {
func setExpenses(expensesFromMainView: Double)
 }

class MainViewController: UIViewController {

@IBOutlet weak var moneyTextField: UITextField!



 var delegate: ExpensesEnteredDelegate? = nil


override func viewDidLoad() {
    super.viewDidLoad()
    // Defining ExpensesVC
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let newExpensesVC = storyboard.instantiateViewControllerWithIdentifier("ExpensesTableView") as! ExpensesTableViewController
    delegate = newExpensesVC

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func spentButton(sender: AnyObject) {


    // Delegating expenses Double value
    if (delegate != nil) {
       let myDouble = Double(moneyTextField.text!)
        let expenses: Double = myDouble!
        delegate!.setExpenses(expenses)
    }


}}

但是数组的数据仍然没有显示在 tableView 中

最佳答案

尝试以下代码示例:

 let aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble)
 expensesArray.append(aSpendedMoneyObject)

或者,如果您希望将不同数组中的更多元素附加到数组中,则可以使用 .extend() 方法。

关于ios - 数组不堆叠Class对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551406/

相关文章:

ios - 带有 fetchedResultsController 的 Tableview 在应用重新启动或 View 重新加载之前不会更新新内容

ios - 在第二次调用期间将数据填充到方法中的字典时出错

javascript - 输出带有子数组和数字对象的大型嵌套数组

arrays - 为什么不能在 Go 中分配给 map 内的数组?

ios - 在 Swift 中将协议(protocol)作为参数实现的 UIViewController

ios - 将导航栏添加到 Storyboard 中时,Xcode崩溃。

ios - Titanium - 在 iOS native 模块中包装 ADTECHMobileSDK 的 CoreData 错误

ios - Swift - 从图像创建 GIF 并将其转换为 NSData

c - 在 C 中传递字符指针

ios - 快速从文件中减去并更新