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