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.
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值