【发布时间】:2016-10-27 10:50:54
【问题描述】:
我正在从事一个用 swift 3.0 编写的项目。我的要求是保存我在某些文本字段中输入的数据(在 CoreData 上)并将其中一个属性填充到表格视图中,因此一旦选择了一行,我想更新该记录(在我的文本字段上重新分配值并保存)。
基本上我有一个名为“Task”的实体,它有三个属性,我想将我保存在核心数据上的一个属性(称为“名称”)填充到表格视图中。因此,当我想编辑我输入的数据时,我点击一行,它会将我引导到最初输入这些数据的 ViewController。但是,当我单击后退按钮而不保存数据时,它将复制数组并填充到我的表格视图中。我怎么能阻止这个。表格视图类的代码如下。
import UIKit
import CoreData
class TableViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var stores = [Store] ()
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.reloadData()
// Do any additional setup after loading the view.
}
override func viewDidAppear(_ animated: Bool) {
let request = NSFetchRequest <NSFetchRequestResult> (entityName: "Store")
request.returnsObjectsAsFaults = false
do {
let results = try context.fetch(request) as! [Store]
// check data existance
if results.count>0 {
print(results.count)
for resultGot in results {
if let expName = resultGot.name {
print("expence name is :", expName)
stores += [resultGot]
print("my array is : \(stores)")
}
}
self.tableView.reloadData()
}
}catch{
print("No Data to load")
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return stores.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell ()
let store = stores [indexPath.row]
cell.textLabel?.text = store.name
//cell.textLabel?.text = myExpensesArray[indexPath.row]
return cell
}
@IBAction func nextButtonPressed(_ sender: AnyObject) {
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "editStore", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "editStore"{
let v = segue.destination as! ViewController
let indexPath = self.tableView.indexPathForSelectedRow
let row = indexPath?.row
v.store = stores[row!]
}
}
【问题讨论】:
标签: ios objective-c uitableview core-data swift3