AppleWatch接入coredata

179 阅读1分钟

在 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)")

}

}

}