之前写过CoreData,现在都忘记了,不多说,直接上代码和截图,增删改查的功能都有
import UIKit import CoreData class ViewController: UIViewController { let entityName = "Person" let managedobjectContext = NSManagedobjectContext(concurrencyType: .mainQueueConcurrencyType) override func viewDidLoad() { super.viewDidLoad() if let path = Bundle.main.path(forResource: "testCoredataDemo",ofType: "momd") { if let mom = NSManagedobjectModel(contentsOf: URL(fileURLWithPath: path)) { let psc = NSPersistentStoreCoordinator(managedobjectModel: mom) managedobjectContext.persistentStoreCoordinator = psc if let dataPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask,true).last { print(dataPath) let path = dataPath.appending("/testCoredataDemo.sqlite") do { try psc.addPersistentStore(ofType: NSsqliteStoreType,configurationName: nil,at: URL(fileURLWithPath: path),options: nil) } catch { print(error) } } } } else { print("path is error") } } //增 @IBAction func insertAction(_ sender: UIButton) { let person = NSEntityDescription.insertNewObject(forEntityName: entityName,into: managedobjectContext) as! Person person.name = "First name \(10)" person.age = Int64(truncating: NSNumber(value: arc4random_uniform(100))) do { try managedobjectContext.save() } catch { print(error) } } // 删 @IBAction func deleteAction(_ sender: UIButton) { let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") let predicate = nspredicate.init(format: "age = %@",NSNumber(value: 44)) request.predicate = predicate do { let result = try managedobjectContext.fetch(request) result.forEach({ (person) in managedobjectContext.delete(person as! NSManagedobject) }) print(managedobjectContext.deletedobjects) if managedobjectContext.hasChanges { try managedobjectContext.save() } } catch { print(error) } } // 改 @IBAction func changeAction(_ sender: UIButton) { let request = NSFetchRequest<NSFetchRequestResult>.init(entityName: "Person") let predicate = nspredicate(format: "age = %@",NSNumber(value: 30)) request.predicate = predicate do { let result = try managedobjectContext.fetch(request) as! [Person] result.forEach({ (person) in person.age = 10000 }) print(managedobjectContext.updatedobjects) if managedobjectContext.hasChanges { try managedobjectContext.save() } } catch { print(error) } } // 查 @IBAction func searchAction(_ sender: Any) { let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") do { let result = try managedobjectContext.fetch(request) as! [Person] print(result) print(managedobjectContext.registeredobjects) } catch { print(error) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // dispose of any resources that can be recreated. } }