使用CoreData进行数据的添加与查询操作

22 篇文章 0 订阅

 

import UIKit

import CoreData

 

class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        //获取数据模型文件地址

        let button  = UIButton(type: UIButton.ButtonType.system)

        button.frame = CGRect(x:20,y:40,width: 100,height: 30)

        button.setTitle("read", for: UIControl.State())

        self.view.addSubview(button)

        button.addTarget(self, action: #selector(touchBegin), for: UIControl.Event.touchUpInside)

        //guard let modelUrl = Bundle.main.url(forResource: "Class", withExtension:"momd") else { print("error     error")

        //    return}

        guard let modelUrl = Bundle.main.url(forResource: "Class", withExtension:"momd") else { print("error     error")

            return}

        //创建数据模型管理实例"

        guard let modelManager = NSManagedObjectModel(contentsOf: modelUrl)

        else{ return }

        let store = NSPersistentStoreCoordinator(managedObjectModel: modelManager)

        let path = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!+"/SchoolSQL.sqlite")

        print(path)

        try! store.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: path, options: nil)

        let context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)

        context.persistentStoreCoordinator = store

        let schoolClass:SchoolClass = NSEntityDescription.insertNewObject(forEntityName: "SchoolClass",into: context) as! SchoolClass

        schoolClass.name = "三年二班"

        schoolClass.studentCount = 60

        let student:Student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: context) as! Student

        student.name = "Jaki"

        student.age = 24

        schoolClass.monitor = student

        if((try? context.save()) != nil)

        {

            print("新增数据成功!")

        }

        

        

        

    }

    @objc func touchBegin() {

        guard let modelUrl = Bundle.main.url(forResource: "Class", withExtension:"momd") else { return}

        //创建数据模型管理实例"

        

        guard let modelManager = NSManagedObjectModel(contentsOf: modelUrl)

        else{ return }

        let store = NSPersistentStoreCoordinator(managedObjectModel: modelManager)

        let path = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!+"/SchoolSQL.sqlite")

        print(path)

        try! store.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: path, options: nil)

        let context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)

        context.persistentStoreCoordinator = store

        let request = NSFetchRequest<SchoolClass>(entityName: "SchoolClass")

        request.predicate = NSPredicate(format: "studentCount == 60")

        let result:NSAsynchronousFetchResult<SchoolClass> = try! context.execute(request) as! NSAsynchronousFetchResult<SchoolClass>

        print(result.finalResult?.first?.name)

    }

 

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值