我正在制作我的第二个应用程序,或者首先没有教程。此应用程序是为了管理资金而建立的,其中一项功能是您可以记录过去的交易。我已经能够显示过去的信息,但此时它已经停止正确访问信息。
每当我尝试从一些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()
}
如果我将数据设置为某些数据集而应用程序不在此视图上,它实际上可以工作一次,但我不能只是每次运行应用程序时重置数据,否则对于长期记录来说无用