【发布时间】:2017-03-15 07:12:55
【问题描述】:
在早期版本的swift中,我有一个核心数据函数
func retrieveItemsForRelatedEntity(entity: String, relatedEntity: String, identifier: String, sortDescriptors: [NSSortDescriptor]?) -> Array<AnyObject>? {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext!
let frequest = NSFetchRequest(entityName: entity)
frequest.returnsObjectsAsFaults = false
if sortDescriptors != nil {
frequest.sortDescriptors = sortDescriptors
}
switch relatedEntity {
case "CostCentre":
frequest.predicate = NSPredicate(format: "costCentre.identifier == '\(identifier)'")
return try! context.executeFetchRequest(frequest)
case "CostCentreDay":
frequest.predicate = NSPredicate(format: "costCentreDay.identifier == '\(identifier)'")
return try! context.executeFetchRequest(frequest)
case "Resource":
frequest.predicate = NSPredicate(format: "resource.identifier == '\(identifier)'")
return try! context.executeFetchRequest(frequest)
case "ResourceDay":
frequest.predicate = NSPredicate(format: "resourceDay.identifier == '\(identifier)'")
return try! context.executeFetchRequest(frequest)
case "CostedDay":
frequest.predicate = NSPredicate(format: "costedDay.identifier == '\(identifier)'")
return try! context.executeFetchRequest(frequest)
default:
print("wrong entity for this function")
return nil
}
}
在 Swift 3.0 中,“无法推断通用结果类型”,所以我可以传入实体类型,而不是传入实体标题字符串,然后为我的获取请求打开它吗?
【问题讨论】:
标签: ios swift core-data nsfetchrequest