我在 NSManagedObject
上有一个核心数据类别方法,它返回一个匹配谓词的对象数组:
+ (NSArray *)objectsWhere:(NSPredicate *)predicate
我希望对返回类型进行注释,这样我就不必在 Swift 中执行强制转换。
例如,我想说:
let modelArray = Model.objectsWhere(predicate)
// Do stuff to an array of Models.
代替
if let modelArray = Model.objectsWhere(predicate) as? [Model] {
// Do stuff to an array of models.
}
这可能吗?如果是这样,一个人如何做到这一点?我试过:
+ (NSArray<id>)objectsWhere:(NSPredicate* _Nonnull)predicate
+ (NSArray<NSManagedObject *>)objectsWhere:(NSPredicate* _Nonnull)predicate
+ (NSArray<__kindof NSManagedObject *>)objectsWhere:(NSPredicate* _Nonnull)predicate
他们都坚持我将结果转换为 [Model]
。 id
并不奇怪,但我真的希望 __kindof
位能起作用,因为所有模型都是一种 NSManagedObject
,但是没有。
最佳答案
我相信 __kindof
只在 Objective-C 中使用,Swift 类型没有类似的构造。
关于ios - 轻量级泛型和类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151289/