在 Xcode 中,创建一个新的 Data Model 文件(命名为 FocusModel.xcdatamodeld)记得选择xcdatamodeld格式。在这个模型文件中,添加 FocusEntity ,例如创建一个名为 Focus
Entity 的实体,并添加 Attribute ,如 name(字符串类型)和 date(日期类型)。
选择你创建的 Entity,然后在 Xcode 的菜单中选择 Editor -> Create NSManagedObject Subclass
划重点,生成后的文件不要直接使用,需要改成如下:
import Foundation
import CoreData
@objc(FocusEntity)
public class FocusEntity: NSManagedObject {
@nonobjc public class func fetchRequest() -> NSFetchRequest {
return NSFetchRequest(entityName: "FocusEntity")
}
@NSManaged public var clock_type: String?
@NSManaged public var begin_time: Int64
@NSManaged public var end_time: Int64
@NSManaged public var duration: Int64
@NSManaged public var label_id: Int64
@NSManaged public var user_id: Int64
@NSManaged public var local_create_time: Int64
@NSManaged public var local_id: Int64
}
属性和类名自己改。
最后来个工具类进行查询和插入数据
import Foundation
import CoreData
class CoreDataManager {
static let shared = CoreDataManager()
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "FocusModel")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
func insertItem(local_id:Int64) {
let context = CoreDataManager.shared.persistentContainer.viewContext
let item = FocusEntity(context: context)
//模型属性
item.local_id = local_id
CoreDataManager.shared.saveContext()
}
func fetchItems() -> [FocusEntity] {
let context = CoreDataManager.shared.persistentContainer.viewContext
let fetchRequest: NSFetchRequest = FocusEntity.fetchRequest()
do {
let items = try context.fetch(fetchRequest)
return items
} catch let error as NSError {
fatalError("Failed to fetch items: \(error), \(error.userInfo)")
}
}
}