使用从情节提要中的通用类继承的类时,出现“界面生成器文件中的未知类”

2024-02-26

我最近重构了我的课程BookTableViewController来自简单的继承UITableViewController,这样它现在继承自泛型类FetchedResultsTableViewController<TResultType, TCellType>它本身继承自UITableViewController.

类声明如下所示:

class BookTableViewController: FetchedResultsTableViewController<Book, BookTableViewCell> {

    override func viewDidLoad() {
        // breakpoints in here do not catch!
    }

}

class FetchedResultsTableViewController<TResultType, TCellType: UITableViewCell>: 
    UITableViewController, NSFetchedResultsControllerDelegate {

    // implementation here

}

在故事板中,自定义类和模块都已设置,我can单击箭头跳转到代码BookTableViewController类,表明故事板已正确链接到该类。但是,当我尝试运行该应用程序时,该类无法识别 - 代码在viewDidLoad()不运行,并且在运行我的应用程序时收到以下记录消息:

Interface Builder 文件中存在未知类 _TtC12Reading_List23BookTableViewController。

我正在运行 XCode 7.3 (Swift 2.2)。这是故事板的限制、错误还是我错过了什么?

Thanks!

UPDATE:

经过一番实验,它似乎确实与泛型继承有关,而不是与类的可访问性有关。定义了以下类:

import Foundation
import UIKit

// Both of these classes are accessible by the Storyboard
class FirstInheritance : UITableViewController{}
class SecondInheritance : FirstInheritance{}

// The generic class is also accessible
class GenericViewController<T> : UITableViewController{}

// But this class is not accessible...
class ConcreteViewController : GenericViewController<String>{}

ConcreteViewController建议在 Storyboard 的类自动完成中使用(尽管通用类也不起作用,因为无法在 Storyboard 中指定类型参数)。


虽然有点晚了,但这个信息可能对任何遇到这个话题的人都会派上用场。

实际上,据我所知,从 Swift 3 开始,故事板中对泛型的支持有些尴尬。

我设法编写了一个扩展 UIViewController 的通用基类,然后约束该通用类的几个子类并在故事板中使用它们。

实际代码的布局与下面指定的类似:

class GenericParent: UIViewController {
    // Has a few, non-generic members ...
}

class ActualGenericClass<T>: GenericParent {
    // There are more generic members in the actual class
    var adapter: Adapter<T> = Adapter()
}

// This class is usable in Interface Builder;
// although auto-complete won't show it, fully writing down
// the class name works
class SpecificInstanceOfActualGenericClass: ActualGenericClass<Int> {
    @IBOutlet weak var tableView: UITableView!
}

令我惊讶的是,效果非常好!

另一方面,下一个例子似乎不起作用:

class GenericCell<T>: UITableViewCell {
    var node: T? = nil
}
class SpecificCell: GenericCell<Int> {
    @IBOutlet weak var coolTitleLabel: UILabel!
}

和以前一样,在 Interface Builder 上(在单元的动态原型上)显式写入单元的类名称会在表视图单元上设置类,并且出口可见。

但是,在运行时,当实例化包含单元格动态原型的 UIViewController 时,会显示“界面生成器文件中的未知类”警告,并且应用程序在单元格出队时崩溃。

所以@Andew Bennet,声明如下:

故事板不支持从泛型类继承的类

虽然你至少是对的,但似乎不再是 100% 正确了;这是我第一次成功完成这个任务,尽管只是部分完成!

有些事情有效,有些则无效,这让我很烦恼,但总比没有好。

这在 Java 中是非常简单的......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用从情节提要中的通用类继承的类时,出现“界面生成器文件中的未知类” 的相关文章

  • 从 iOS 应用程序内的 Junos Pulse 获取用户凭据

    我正在通过 Junos Pulse 在 iPad 中建立 VPN 连接 以进入我组织的 Intranet 谁能告诉我是否有任何 iOS api 或 SDK 可用于获取在 iOS 应用程序内的 Junos pulse 中输入的用户凭据 Jun
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • iOS 滚动视图允许滚动过去的内容

    我正在努力优化我的应用程序以适应横向和较小的屏幕 我主要使用滚动视图来实现这一点 在我的其中一个视图中 我有一个容器视图 当我在故事板中的设备之间切换时 这个容器视图看起来很完美 容器视图映射到具有滚动视图的视图控制器 该滚动视图的顶部 底
  • 如何在 Swift 中获取字典中最后输入的值?

    如何获取 Swift 字典中最后输入的值 例如 我如何从下面获取值 CCC var dictionary Dictionary
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • 检测 AvPlayer 何时切换比特率

    在我的应用程序中 我使用 AVPlayer 通过 HLS 协议读取一些流 m3u8 文件 我需要知道在流会话期间 客户端切换比特率多少次 我们假设客户端的带宽正在增加 因此客户端将切换到更高比特率的段 AVPlayer能检测到这个开关吗 T
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • UICollectionView 拖放文件夹创建

    我正在使用 UICollectionView 创建 iOS 画廊应用程序 我希望用户能够拖放图像来重新排序图库并创建文件夹 类似于 iPhone 上的主屏幕 我发现了以下内容tutorial http nshint io blog 2015
  • 防止 AlertView 被解雇

    任何人都可以帮助我防止在其按钮单击事件上解雇警报视图吗 我有一个 textview 作为我的alertView 的子视图 如果 textview 值为 nil 我不想关闭它 因为这是一个非常老的问题 但我得到了一个解决方案 并且如果其他开发
  • 超类与类SpecificationPolicy不匹配

    我得到了一个superclass mismatch for class SpecificationPolicy尝试安装或升级某些brew 软件包时出错 例如 更新安装 supabase CLI 时 brew install supabase
  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 苹果企业程序分发问题[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这个问题涉及到Apple iOS 开发者企业计划 http developer apple com programs ios enterprise 我
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 空指针测试性能

    C 中测试引用类型变量是否为空指针的性能如何 like if x null 与测试小于零的整数甚至布尔值是否为假相比 是否还有其他关于此类的问题空指针测试 例如是产生的垃圾 我对游戏的每一帧进行了数百次这样的测试 我想知道这些测试是否会导致
  • 如何在没有 $this 的情况下处理类变量?

    我正在制作一个带有 OOP 概念的 WordPress 插件 但我面临一些有线问题 首先我有一个main plugin php文件 我有这样的课程 include once plugin dir path FILE something ph
  • 如何无异常地检查文件是否存在?

    如何在不使用try https docs python org 3 6 reference compound stmts html try陈述 如果您检查的原因是这样您可以执行类似的操作if file exists open it 使用更安
  • pandas 按大写字母排序

    运行这段代码 df pd DataFrame ADc Abc AEc columns Test index 0 1 2 df sort columns Test axis 0 ascending False inplace True 返回排
  • C++开源项目推荐[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ActionBar 中操作/菜单项的动态控制

    有没有办法动态禁用 隐藏 添加 删除 ActionBar 中的菜单项 例如 在用户在活动中填写有效的电话号码之前 操作将被禁用 我在 ActionBar API 中没有找到任何有用的方法 唯一的方法似乎是在 ActionBar 中使用自定义
  • 如何使用imagick的writeImage()函数?

    如果我将脚本保存在与正在操作的图像相同的目录中 则此方法有效 并且结果图像 foo jpg 也在同一位置生成 但是 如果脚本位于一个位置 而我希望使用的图像位于另一个位置 而我希望保存缩略图的位置位于其他位置 那么如何指定这些路径呢 做这样
  • 使用 Jekyll 插件在 _site 内生成文件

    我编写了一个 Jekyll 插件 Tags 它生成一个文件并返回该文件的链接字符串 一切都很好 但如果我将该文件直接写入 site 文件夹 它就会被删除 如果我将该文件放在 site 文件夹之外 则它不会在 site 内生成 我应该在哪里以
  • 为什么 KineticJS 文档中没有draw()方法?

    我花了几个小时在谷歌上搜索 Kinetic Layer draw 方法 我发现的只是用例 没有关于如何 何时以及为何使用它的文档 也许它已经被弃用了 这些是我在学习和使用这个精彩框架时使用的主要链接 http kineticjs com d
  • 无法使 Laravel 4 的 Validator 类在框架外工作

    我正在尝试在框架之外使用 Laravel 4 Eloquent 因为 Illuminate Database 包已通过 Composer 独立可用 Eloquent 本身运行良好 但我在尝试实现验证规则时遇到了阻碍 我首先尝试使用一些预构建
  • 如何处理 Cordova 或 Phonegap 上 android 4.0-4.3 和 4.4 之间的宽度不一致?

    我正在 Cordova 3 4 上做一个应用程序 并在使用 Android 4 4 2 的 Moto X 使用 Android 2 3 的 Samsung Galaxy Ace 和模拟器上进行测试 我保留 cli 创建的原始视口 在CSS上
  • jQuery UI 对话框如何禁用后台输入的焦点?

    当您使用 jQuery UI 打开模式对话框时 您会注意到 如果使用 Tab 键 则可以将焦点放在对话框的按钮上 但对话框外部的任何输入都会被忽略 我正在尝试实现同样的行为jQuery UI 工具叠加 http jquerytools or
  • 具有绝对位置的嵌套 Touchable

    我需要实现一个界面 其中一个对象是可单击的 但该对象的一个 区域执行另一个操作 如下所示 gt clicking on this small area does an action gt clicking on this area does
  • 值循环的最小排序

    给定如下序列 1 2 1 2 1 1 1 2 1 2 1 3 1 2 1 2 1 3 什么是高效的获得最小订购量的方法 1 1 1 2 1 2 1 3 1 2 1 2 1 3 1 2 1 2 暴力方法是显而易见的 所以请不要推荐它 除非提供
  • 如何通过 Facebook 的 Graph API 获取共同好友

    有没有办法使用 Facebook 的 Graph API 获取共同好友列表 我一直在玩这个工具 https www simoncross com fb graph GET https graph facebook com 并且还没有想出办法
  • 使用 MVVM 绑定 ComboBox SelectedItem

    我有一个问题选定的项目 in my ComboBox
  • 如何找到对用户控件的所有引用

    在 Visual Studio 2010 中 我有一个非常大的 ASP NET 网站项目 其中有很多用户控件 如何确定整个项目中引用特定 ascx 用户控件的所有 aspx 页面 Thanks 右键单击您的班级User Control并选择
  • 如何在设计时制作支持拖放的自定义WPF ContentControl?

    我想创建内部有一个 子 控件的自定义 WPF 控件 子类化ContentControl or UserControl有效 但有一个缺陷 这些控件在设计器模式下不起作用 我所说的 不起作用 是指这种情况 假设我有一个Canvas里面有我的自定
  • 如何在 iPhone 中保存密码?

    我需要创建一个 iPhone 应用程序 它将与网站通信 所以它需要用户名和密码 现在我需要知道如何在 iphone 中保存用户名和密码 我已经使用过 NSuserdefaults 但这并没有解决我的 pblm 另外我需要恢复视图 从用户退出
  • 使用从情节提要中的通用类继承的类时,出现“界面生成器文件中的未知类”

    我最近重构了我的课程BookTableViewController来自简单的继承UITableViewController 这样它现在继承自泛型类FetchedResultsTableViewController