ios - 轻量级泛型和类方法

标签 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,但是没有。

最佳答案

我相信 __kindof 只在 Objective-C 中使用,Swift 类型没有类似的构造。

关于ios - 轻量级泛型和类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151289/

相关文章:

SwiftUI NavigationView 看不到图像

ios - SpriteKit 在 [self removeAllActions] 上崩溃;

ios - 从 Swift 类访问 Objective-c 基类的实例变量

ios - 具有多个 viewController 的 pageController

swift - 在 iOS 中将图像转换为视频而不锁定 UI 线程 (Swift)

ios - 从单元格创建事件 (IBAction)

ios - 自定义导航栏被另一个导航栏隐藏,但它没有在快速 Storyboard中显示

iphone - 读取 XML 并将其显示在 TableView 中

ios - 崩溃 UIScrollView EXC_BAD_ACCESS

ios - 我的复合谓词应该如何构造才能包含在内