在加载数据时获取SIGABRT

时间:2017-03-14 18:46:40

标签: ios swift

我正在制作我的第二个应用程序,或者首先没有教程。此应用程序是为了管理资金而建立的,其中一项功能是您可以记录过去的交易。我已经能够显示过去的信息,但此时它已经停止正确访问信息。

每当我尝试从一些forKeys访问数据时,它就会给我一个SIGABRT。我已经查看了很长一段时间但找不到任何东西

import UIKit

class SecondViewController: UIViewController, UITableViewDelegate,UITableViewDataSource 
{

let defaults = UserDefaults.standard;

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var subViewREC: UIView!

public var dates = [""]
public var names = [""]
public var costs = [""]
public var IDs:[Int] = [0]
public var oldID:Int = 0

var refresher:UIRefreshControl!


//--------------------------making cells-------------------------------
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return(names.count);
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->UITableViewCell
{
    let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customCell;


    cell.name?.text = names[indexPath.row];
    cell.cost?.text = "cost:\t" + costs[indexPath.row];
    cell.date?.text = dates[indexPath.row];


    return(cell);
}





//----------------------------------view did load--------------------------
override func viewDidLoad() {
    super.viewDidLoad()
    subViewREC.isHidden = true;


    refresher = UIRefreshControl()
    refresher.addTarget(self, action: #selector(SecondViewController.populate), for: UIControlEvents.valueChanged)
    tableView.addSubview(refresher)

这是实际问题似乎发生的地方,同时为日期和其余部分加载新值:

    dates = defaults.object(forKey: "dateMemory") as! [String];
    names = defaults.object(forKey: "nameMemory") as! [String];
    costs = defaults.object(forKey: "costMemory") as! [String];
    IDs = defaults.object(forKey: "ID") as! [Int];
    oldID = defaults.object(forKey: "oldID") as! Int;
    populate()
}

//----------------------------populate tableview-----------------------
func populate()
{

    tableView.reloadData();
    refresher.endRefreshing();
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

如果我将数据设置为某些数据集而应用程序不在此视图上,它实际上可以工作一次,但我不能只是每次运行应用程序时重置数据,否则对于长期记录来说无用

0 个答案:

没有答案