Для базовых данных вам необходимо создать необходимые объекты в модели CoreData .xcdatamodeld
.
Нажмите на Добавить объект и назовите его.Затем добавьте атрибуты, которые вы хотите сохранить.
Вы можете увидеть эту ссылку о том, как создавать объекты и атрибуты.После создания всего, мы можем написать CoreDataStack
и класс менеджера, или мы можем напрямую использовать код, предварительно написанный в AppDelegate, когда мы проверяем Core Data при создании проекта.Я буду здесь использовать класс CoreDataStack
.
Вот класс
import Foundation
import CoreData
class CoreDataStack: NSObject {
static let moduleName = "YourProject"
static let shared = CoreDataStack()
private override init() {
super.init()
_ = self.persistentContainer
}
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)")
}
}
}
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: CoreDataStack.moduleName)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
print("Coordinator URL - \(storeDescription)")
})
return container
}()
}
Теперь мы можем создать класс менеджера для вставки данных.Допустим, ваша сущность Person
и ее атрибуты name
и address
Вот класс CoreDataManager
для вставки, обновления, выборки данных.
import UIKit
import CoreData
class CoreDataManager: NSObject {
class func addRecord(object:[String:Any]) {
let person = NSEntityDescription.insertNewObject(forEntityName: "Person", into: CoreDataStack.shared.persistentContainer.viewContext) as! Person
person.name = object["name"] as? String
person.address = object["address"] as? String
CoreDataStack.shared.saveContext()
}
class func getRecords() -> [Person]? {
let request:NSFetchRequest<Person> = Person.fetchRequest()
do {
let results = try CoreDataStack.shared.persistentContainer.viewContext.fetch(request)
return results
} catch {
print(error.localizedDescription)
}
return nil
}
}
Вы можете вызвать метод addRecord
в своем классе ViewController
, и он сохранит ваши данные.Я рекомендую вам передать весь массив, а затем добавить основные данные и, наконец, вызвать saveContext()
.
Наконец, вы можете использовать getRecords
, чтобы получить все записи.