微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift CoreData增删改查

之前写过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 举报,一经查实,本站将立刻删除。

相关推荐