2
我在我的應用程序中使用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如果你想用你的方式來做,你根本不會使用泛型。只需使用'Any'參數並切換其類型... –
哦,我現在看到了,謝謝。還有一個問題,如果我定義一個結構例如LoginData,如何檢查參數是否是LoginData類型? –