【问题标题】:Swift Generic class as delegateSwift 泛型类作为委托
【发布时间】:2014-12-07 01:55:43
【问题描述】:

我在 swift 中使用泛型类作为委托时遇到了问题。例如,我尝试使用定义为的通用 NSFetchedResultsDelegate:

class FetchedTableController<T:NSManagedObject> : NSFetchedResultsControllerDelegate

在类中,我设置了一个 NSFetchedResultsController 并将委托设置为“self”。但是由于某种原因,委托方法从未被调用过。当我删除类的通用部分时,代表按预期被调用:

class FetchedTableController : NSFetchedResultsControllerDelegate

是否有使用泛型类作为委托的解决方案?

【问题讨论】:

  • 如果你尝试 FetchedTableController 会发生什么:GFetchedTableController, NSFetchedResultsControllerDelegate?
  • 见:this answer
  • 好吧,这是不可能的……我做了一个解决方法,创建了第二个私有类来接收委托调用。 @rintaro 感谢您标记答案

标签: ios objective-c generics swift delegates


【解决方案1】:

这似乎已在 Xcode7 中修复。我可以成功地将泛型类用作 NSFetchedResultsControllerDelegate、UITableViewControllerDelegate 等。您甚至不需要在类中添加 @objc 前缀。

但是,该类仍然必须有一些 NSObject 超类。

【讨论】:

    猜你喜欢
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多