之前写过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. } }
原文地址:https://www.jb51.cc/swift/320983.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。