簡體   English   中英

如何在CoreData中存儲整個object而不在Swift 5中按值設置值?

[英]How to store a whole object in CoreData without setting value by value in Swift 5?

我正在使用 CoreData 開發一個持久性管理器,並且我打算使其盡可能可重用。 我的第一個想法是開發一個 function 接收通用 object 作為參數並使用 CoreData 存儲它。 (下面的例子)

func store<T: NSManagedObject>(object: T) {
    let entityName = "\(type(of: object))"
    
    let context = persistentContainer.viewContext
    guard let auditEntity = NSEntityDescription.entity(forEntityName: entityName, in: context) else { return }
    
    let auditToStore = Audit(entity: auditEntity, insertInto: context)
    
    auditToStore.setValue("example value", forKey: "example key")
    
    do {
        try context.save()
    } catch let error as NSError {
        print("Could not save. \(error), \(error.userInfo)")
    }
}

問題在於,據我所知,要將數據保存到 CoreData 中,您必須設置要保存的新項目的每個值,如果 function 假裝是通用的,則很難做到。

非常感謝。

經過一番研究,我找到了答案並想出了如何創建一種方法來存儲通用 NSManagedObjects。

/// This method stores an object of a generic type that conforms to NSManagedObject
func insert<T: NSManagedObject>(object: T) {
    let context = persistentContainer.viewContext
    
    context.insert(object)
    
    do {
        try context.save()
    } catch let error as NSError {
        print("Could not save. \(error), \(error.userInfo)")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM