NSManagedObject
我正在尝试通过协议向 an 添加功能。我添加了一个可以正常工作的默认实现,但是一旦我尝试使用协议扩展我的子类,它就会告诉我它的某些部分没有实现,即使我添加了默认实现。
有人知道我做错了什么吗?
class Case: NSManagedObject {
}
protocol ObjectByIdFetchable {
typealias T
typealias I
static var idName: String { get }
static func entityName() -> String
static func objectWithId(ids:[I], context: NSManagedObjectContext) -> [T]
}
extension ObjectByIdFetchable where T: NSManagedObject, I: AnyObject {
static func objectWithId(ids:[I], context: NSManagedObjectContext) -> [T] {
let r = NSFetchRequest(entityName: self.entityName())
r.predicate = NSPredicate(format: "%K IN %@", idName, ids)
return context.typedFetchRequest(r)
}
}
extension Case: ObjectByIdFetchable {
typealias T = Case
typealias I = Int
class var idName: String {
return "id"
}
override class func entityName() -> String {
return "Case"
}
}
我得到的错误是Type Case doesn't conform to protocol ObjectByIdFetchable
非常感谢帮助。