Я использую CoreData в своем приложении. В базе данных есть 4 таблицы: «Пользователь», «Медицина», «Расписание» и «Пациент». Для каждой таблицы, мне нужно написать функцию Add, чтобы добавить данные в базу данных, как это:iOS - Swift: Как написать общую функцию для этого случая?
func addUser(email: String, password: NSData, handler: @escaping (_ status: SaveStatus, _ error: NSError?) -> Void){
let managedContext = (UIApplication.shared.delegate as? AppDelegate)?.managedObjectContext
let entity = NSEntityDescription.entity(forEntityName: DB.TABLE.USER, in: managedContext!)!
let nurse = NSManagedObject(entity: entity, insertInto: managedContext) as! User
nurse.email = email
nurse.password = password
save { (status, error) in
handler(status, error)
}
}
func addMedicine(name: String, handler: @escaping(_ status: SaveStatus, _ error: NSError?) -> Void){
let managedContext = (UIApplication.shared.delegate as? AppDelegate)?.managedObjectContext
let entity = NSEntityDescription.entity(forEntityName: DB.TABLE.MEDICINE, in: managedContext!)!
let medicine = NSManagedObject(entity: entity, insertInto: managedContext) as! Medicine
medicine.name = name
save { (status, error) in
handler(status, error)
}
}
и так далее ...
Я хочу написать обобщенную функцию как это:
func addDataToDB<DATA>(object: DATA, handler: @escaping SaveStatusHandler){
switch DATA {
case DATA is LoginData:
break
default:
break
}
}
Я не знаю, какой тип должен быть LoginData, поэтому я могу сравнить DATA с ним. Или есть лучший способ сделать это?
Если я хочу сделать это по-своему, какое решение для этого? –
@HoangTrung Если вы хотите сделать это на своем пути, вы не собираетесь использовать дженерики вообще. Просто используйте параметр «Любой» и переключитесь на его тип ... –
О, посмотрим, спасибо. Еще один вопрос, если я определяю структуру, например. LoginData, как я могу проверить, является ли этот параметр типом LoginData? –