我发现我没有效率地重复相同的try / catch代码,因此我想为所有NSManagedObject子类提供一个函数,以便它们可以简单地返回一个现有的对象他们的类型,如果它存在。我希望这个函数返回相关类的对象,而不仅仅是NSManagedObject。例如,如果我打电话给DataMessage.existingObject(objectID: messageID)
,我会收到一个DataMessage,因为那是我称之为的课程。而且我不需要每次都as! DataMessage
。
这是我现在的代码,这不是很正确:
extension NSManagedObject {
class func existingObject(objectID objectID: NSManagedObjectID, context: NSManagedObjectContext) -> Self? {
let message: NSManagedObject?
do {
message = try context.existingObjectWithID(objectID)
}
catch {
message = nil
}
return message
}
}
我好像差不多了。如何让它返回调用该函数的类的实例?