UIKit import CoreData import
ViewController Class: UIViewController {
let nameTxt: UITextField = { let td = UITextField() td.translatesAutoresizingMaskIntoConstraints = false td.placeholder = "Enter Id" td.borderStyle = .line td.layer.borderWidth = 1 td.layer.borderColor = UIColor.lightGray.cgColor return td }() let doneBt: UIButton = { let bt = UIButton() bt.translatesAutoresizingMaskIntoConstraints = false bt.setTitle("DONE", for: .normal) bt.setTitleColor(.white, for: .normal) bt.addTarget(self, action: #selector(handleDoneBt), for: .touchUpInside) bt.backgroundColor = UIColor.blue return bt }() @objc func handleDoneBt() { saveData() } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. view.backgroundColor = .white setupView() setupLayout() } func saveData() { guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return} let manageContent = appDelegate.persistentContainer.viewContext let userEntity = NSEntityDescription.entity(forEntityName: "Users", in: manageContent)! let users = NSManagedObject(entity: userEntity, insertInto: manageContent) users.setValue(1, forKeyPath: "id") users.setValue(nameTxt.text, forKeyPath: "name") users.setValue(123, forKeyPath: "mobile") do{ try manageContent.save() }catch let error as NSError { print("could not save . \(error), \(error.userInfo)") } fetchData() } func fetchData() { guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return} let manageContent = appDelegate.persistentContainer.viewContext let fetchData = NSFetchRequest<NSFetchRequestResult>(entityName: "Users") do { let result = try manageContent.fetch(fetchData) for data in result as! [NSManagedObject]{ print(data.value(forKeyPath: "id") as Any) print(data.value(forKeyPath: "name") as Any) } }catch { print("err") } } func setupView() { view.addSubview(nameTxt) view.addSubview(doneBt) } func setupLayout(){ NSLayoutConstraint.activate([ nameTxt.centerXAnchor.constraint(equalTo: view.centerXAnchor), nameTxt.centerYAnchor.constraint(equalTo: view.centerYAnchor), nameTxt.widthAnchor.constraint(equalToConstant: 160), nameTxt.heightAnchor.constraint(equalToConstant: 30), doneBt.topAnchor.constraint(equalTo: nameTxt.bottomAnchor,constant: 6), doneBt.leftAnchor.constraint(equalTo: nameTxt.leftAnchor,constant: 8), doneBt.widthAnchor.constraint(equalToConstant: 120), doneBt.heightAnchor.constraint(equalToConstant: 36) ]) }
}
DISPLAY IN TABLEVIEW
func fetchData () {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return} let manageContent = appDelegate.persistentContainer.viewContext let fetchData = NSFetchRequest<NSFetchRequestResult>(entityName: "Users") do { let result = try manageContent.fetch(fetchData) allData = result as! [NSManagedObject] tbl.reloadData() }catch { print("err") } } var allData = [NSObject]()
func tableView (_ tableView: UITableView, section numberOfRowsInSection: Int) → Int {return allData.count}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! tblCell cell.lbl.text = allData[indexPath.row].value(forKey: "name") as? String return cell }
func tableView (_ tableView: UITableView, commit editStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete { let task = allData[indexPath.row] guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return} let manageContent = appDelegate.persistentContainer.viewContext manageContent.delete(task as! NSManagedObject) (UIApplication.shared.delegate as! AppDelegate).saveContext() do { try manageContent.save() } catch { print("Fetching Failed") } } fetchData() }