轻量级泛型和类方法

时间:2015-08-22 01:09:27

标签: ios objective-c swift generics

我在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,但没有。

2 个答案:

答案 0 :(得分:0)

我相信__kindof仅用于Objective-C,并且Swift类型没有类似的构造。

答案 1 :(得分:0)

简短的回答是,你无法做到这一点,这是一种无赖。