【问题标题】:How do I define generic typealias for Swift to return specific types of objects?如何为 Swift 定义通用类型别名以返回特定类型的对象?
【发布时间】:2021-02-01 18:15:00
【问题描述】:

这是我的简单课程:

class PersistentStoreCoordinatorMock: Storageable {
    var objects = [T]() // here I need to define return array
    func findAll<T: NSManagedObject>(of type: T.Type, predicate: NSPredicate) -> [T] {
        findAllWasCalled = true
        return objects //here I need to return this when that function was called
    }
}

我该怎么做?

【问题讨论】:

  • 我更喜欢具有关联类型的协议,请参阅stackoverflow.com/questions/46037860/…
  • 我不明白。 T 没有在类范围内定义,但如果你要在那里引用它,那就是它需要的地方。 (也许弄清楚它是什么,因为它肯定不是T。我很遗憾不得不使用名为T 的东西的傻瓜。至少要大写该属性的名称;即PersistentStoreCoordinatorMock&lt;Object: NSManagedObject&gt;[Object]() )

标签: swift


【解决方案1】:

如 cmets 中所述,T 未在类范围内定义。您需要在类声明中指定泛型类型,以便在您的类中使用它。
试试这个:

class PersistentStoreCoordinatorMock<T: NSManagedObject>: Storageable {
    var objects = [T]() // here I need to define return array
    func findAll(of type: T.Type, predicate: NSPredicate) -> [T] {
        findAllWasCalled = true
        return objects //here I need to return this when that function was called
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2020-11-16
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多