Swift 中的抽象类和抽象函数[重复]

2024-03-31

我来自 Java,现在我想在 Swift 中创建抽象类。

我有这门课Java,我想做同样的事情Swift如果可能的话

abstract class Fetcher
{
    private Item[] items;
    public void fetch()
    {
        //SOME CODE
        parse();
        //SOME CODE
    }

    public abstract void parse();
}

So,有没有办法在 Swift 中实现同样的目标,我不介意使用任何 hack,这是最后的希望


不幸的是,Swift 不支持抽象类和方法。

为了达到类似的效果,在 Swift 中我们使用协议(Java 中的接口)。

所以你的班级的一个例子是:

protocol Fetcher {
    var items: [Item] { get set }
    func fetch()
    func parse()
}

您可以做的一件事是标记班级成员final以防止它们在子类中被覆盖。

如果您想要其中一个功能的默认实现,您可以扩展您的协议:

extension Fetcher {
    func fetch() {
        //SOME CODE
        parse()
        //SOME CODE
    }
}

您不需要在目标类中实现它。

例如,使用上面的协议:

class Foo: Fetcher {
    var items = [Item]()

    // No need for fetch method, since it's already implemented

    func parse() {
       // Do something
    }
}

注意,上面的实现不包含该方法fetch因为它已经在协议扩展中实现了。

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

Swift 中的抽象类和抽象函数[重复] 的相关文章

  • Swift UIToolBar 追加 UIBarButtonItem 项目

    我的语法不正确 有人知道这里缺少什么吗 我正在使用 Xcode 6 beta 3 并且尝试将工具栏项动态添加到 viewDidLoad 中的 手动添加的 工具栏 有两个问题 首先 我无法将工具栏中的项目附加到数组中 其次 虽然编译器允许我调
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • 删除 UISearchBar 中的清除按钮

    我想从 UISearchBar 中删除清除按钮 灰色 x 我尝试按照中的描述进行操作这个答案 https stackoverflow com a 19458201 但它不起作用 我将 Objective C 代码从下面的答案和评论翻译为以下
  • Health 处理多个步骤源的方式与 HealthKit 不同——swift

    我的 Swift iOS 应用程序与 HealthKit 连接 向用户显示他们当天到目前为止已经走了多少步 在大多数情况下 这是成功的 当步数的唯一来源是 iPhone 内置计步器功能记录的步数时 一切正常 并且我的应用程序显示的步数与健康
  • Swift 2.1- tabBarController!.selectedIndex 返回大整数

    我需要把tabBarController selectedIndex常量内的数字 我期望一个介于 0 和 3 之间的数字 具体取决于我选择的选项卡 但我得到的数字如下2147483647 有什么想法吗 代码是 let selectedTab
  • 还有比这更好的方法在通知附件中使用 Assets.xcassets 中的图像吗?

    我想将 Assets xcassets 中的图像附加到通知中 我已经寻找解决方案大约一个小时了 这似乎是执行此操作的唯一方法 func createLocalUrl forImageNamed name String gt URL let
  • AVPlayer Swift:如何隐藏控件并禁用横向视图?

    因为这是我的第一篇文章 所以简单介绍一下我 通常我设计东西 主要是 UI 但我真的很想跨入编程领域 以便更好地理解你们 所以我决定构建一个小应用程序来开始 所以我已经花了几个小时试图解决这个问题 这是我的第一个应用程序项目 所以我为我的新手
  • RealityKit – 如何为自然光创建阴影捕捉器?

    我想创建一架飞机 func getShadowPlane width Float height Float gt ModelEntity let sphereResource MeshResource generatePlane width
  • 按钮图像未显示在 UItextfield 的 rightView 中

    我创建了一个按钮图像 并使用 Sa wift 将其放置在 UITextField 密码 的 rightView 上 我想在密码字段中创建切换按钮隐藏 显示安全文本 右视图中显示的图像 Code func passwordToggleButt
  • 使用 Swift 创建 SKSpriteNode 子类

    我正在尝试创建作为 SKSpriteNode 子类的类 并且我想向其添加其他属性和函数 但在第一步中我遇到了错误 这是我的代码 import SpriteKit class Ball SKSpriteNode init super init
  • 关于 Swift 中重写类属性的困惑

    我已阅读 Swift 文档并在这里搜索 但我仍然不确定如何实现类层次结构 其中每个子类为继承的静态属性设置自定义值 那是 基类定义了一个静态属性 所有实例共享相同的值 子类覆盖静态属性 所有实例共享相同的值 这与基类不同 财产可以储存吗 另
  • 你能用 Swift 计算一个字符串吗?

    我有一个变量 并且有一个以字符串形式存储在其中的函数 var x func myFunction y Int println y 有没有办法评估字符串并运行函数 No 没有等效的eval https developer mozilla or
  • 将 3D 对象添加到 ARGeoAnchor

    如果这个问题不太好 请原谅我 我在 Apple 的 ARGeoAnchor 文档中遇到了一些障碍 目前 ARGeoAnchor 仅在 AR 场景视图中显示一个蓝点 我正在尝试显示任何 3D 渲染或对象 My code let coordin
  • 转换任何对象?到字符串

    我有一个返回 AnyObject 的函数 func aFunction param String gt AnyObject 如何将其转换为字符串 和字符串 尝试这个 if let result aFunction test as Strin
  • Swift 中的条件导入

    我有一个在各种应用程序中使用的日志功能 由于我在整个应用程序中使用它 因此也可以方便地进行 Crashlytics 日志记录调用 然而 并非每个应用程序都使用 Crashlytics 在 Objective C 中 您可以使用预处理器条件来
  • 修改多张照片时只有一个 iOS 权限对话框

    我的应用程序允许用户从相机胶卷中选择多个图像并对这些图像应用编辑 但是 它会提示用户获得每个图像编辑的权限 编辑用户图像时是否可以只显示一个权限对话框 如果是 我该如何将我的编辑分组为一项权限 这是我的应用程序的屏幕截图 我在应用商店中发现
  • iOS Swift 多维数组 - 编译需要很长时间。我应该改变什么?

    我是斯威夫特的新人 以前从未使用过 ObjC 编程 我在使用 iOS 应用程序时遇到了问题 通过选择器查询数组非常简单 我有 4 个多维数组 如下所示 let Setting 0 0 0 0 0 0 2230 0 0 0 0 0 2230
  • 为什么数组不符合 Equatable,而它的项在 Swift 中是 Equatable?

    UPDATE 从 Xcode 9 3 开始 包括斯威夫特 4 1 数组相等按预期工作 并且原始问题中的代码编译没有错误 然而 请查看已接受的答案 因为它提供了更好 更现代的解决方案 原问题如下 当我尝试声明类型为泛型枚举的实例时 Post
  • 变量 p 在初始化之前通过引用传递

    我有一个 Human 类 它的函数可以接受任意数量的人 并确定某人是否比这些人中的任何人年长 然后返回一个包含他 她比其年长的人的数组 func isOlderThan people Human gt Human var p Human f
  • 如何在 iOS 11 上的 Swift 中获取 FLAC 文件元数据?

    我需要获取 FLAC 文件的元数据 我尝试了以下代码 let item AVPlayerItem url URL fileURLWithPath path let commonMetadata item asset commonMetada

随机推荐

  • 在表中重复列名有什么用吗?

    在 sqlite3 中 我可以强制两列使用相同的名称 如以下查询所示 SELECT field one AS overloaded name field two AS overloaded name FROM my table 它返回以下内
  • 在 memcached 中存储 ActiveRecord 对象的最佳方式是什么?

    目前在 memcached 中存储 ActiveRecord 对象存在两个问题 未定义的类 模块问题 根据我所读到的内容 这仍然是一个没有人有真正好的解决方案的错误 cache fu 插件可能对此有最好的解决方案 将其检索调用包装在一个块中
  • 为什么 JavaScript 使用原型继承来实现?

    有很多文章和帖子解释了 JavaScript 继承的工作原理 但为什么 JavaScript 使用原型继承而不是经典继承来实现呢 我喜欢 JavaScript 所以我并不是说它是坏事 我只是好奇 以下是布伦丹 艾奇 Brendan Eich
  • 从 cmdlet 内调用 PSCmdlet

    我有一个完全用 C 编写的 PS 模块 它包含大约 20 个已投入生产的 Cmdlet 其中一些 共享代码 举个例子 我有一个名为InvokeCommitCommand产生一个 变更集 此 Cmdlet 还发布此变更集的元数据 我现在想创建
  • Heroku:在 Heroku 上上传静态站点?

    我正在构建我的作品集 并使用 HTML CSS 和 Javascript 制作简单的蚀刻草图项目 我尝试在 Heroku 上托管该网站 但收到此错误 remote No default language could be detected
  • 我的连接表查询代码是否有错误?

    我真的对这些代码感到困惑 我有这样的查询 CREATE ALGORITHM UNDEFINED DEFINER root localhost SQL SECURITY DEFINER VIEW aIPK AS select ipbmst f
  • 如何使 Toast 仅在应用程序位于前台时才出现?

    我有一个Toast这是从内部调用的Service 按照设计 无论应用程序的状态如何 它总是会出现 如何让它仅当我的应用程序位于前台时出现 而不是当其他应用程序位于前台时出现 也就是说 无需将其移动到Activity code mparaz
  • 使用 ViewGroup 抛出 NullPointerException

    有谁知道这可能是什么原因造成的 11 16 16 23 26 745 ERROR AndroidRuntime 9549 Uncaught handler thread main exiting due to uncaught except
  • 如何在keras中编写序列来对RNN进行排序?

    我正在尝试编写一个序列来在 keras 中对 RNN 进行排序 我使用我从网络上了解到的内容编写了这个程序 我首先对文本进行标记 然后将文本转换为序列并填充以形成特征变量X 目标变量Y获得了第一次转移x向左然后填充它 最后 我将特征和目标变
  • 3 行图标不会在导航抽屉中动画化为较小的图像

    徽标旁边的小图标 指示器或 3 行 不会变小 gt this image is not animating When I click the apps logo the drawer is opened but the image is n
  • Firebird 中的表可以重命名吗?

    是否可以在 Firebird 中重命名表 或者我应该创建一个新表 然后使用插入移动数据 显然不是 您必须创建一个新表 复制旧值 或者创建一个具有与原始表相同的预期名称的视图 See http www firebirdfaq org faq3
  • Spring Integration - 入站文件端点。如何正确处理文件。

    我有一个 Spring 集成流程如下
  • 更改浮动操作按钮的形状

    我想在我的布局中添加一个浮动操作按钮 想问一下如何自定义浮动操作按钮的形状并将其更改为您自己的图标 如果您想更改 形状 那么您可能必须使用自定义形状 可能是矩形或正方形 创建自己的 FAB 实现 要更改图标 您只需使用android src
  • Android java.lang.SecurityException on Settings.Secure.putString()

    我正在尝试在 Android 2 2 中设置系统属性 使用Android for eclipse插件 导致异常的行是 Settings Secure putString getContentResolver Settings Secure
  • 我们可以在android NDK代码中使用系统IPC吗

    在这里我想使用系统 IPC 方法 例如
  • 在 Eclipse 中调试 Android Widget 代码

    我在 Android 编程的帮助下开始解锁 Android 曼宁 http www manning com ableson 这是一本来自圣诞老人的好书 在运行了一些小测试和示例之后 我开始为我自己的应用程序开发概念 我希望我的应用程序作为家
  • WebStorm 可以在我编写代码时自动格式化代码吗?

    在 Visual Studio 中 当我输入一些特殊字符 如 时 它会自动格式化相关代码段 但在 WS 中 什么也没有发生 我试图找到这个选项 但最终没有结果 e g In VS if we type something like var
  • 为 PostgreSQL 8.3 安装 PL/Ruby

    这是为了能够发展postgres具有嵌入式功能ruby代码 但我一直无法建造它 据建议http www robbyonrails com articles 2005 08 22 installing untrusted pl ruby fo
  • 三元赋值的“写出”等价物是什么?

    我有一个结构是不可默认构造 我想根据条件为该结构的对象分配不同的值 由于该结构是非默认构造的 因此不可能声明它的统一对象 但是 可以使用三元来做到这一点 struct foo foo int a foo generateFoo1 retur
  • Swift 中的抽象类和抽象函数[重复]

    这个问题在这里已经有答案了 我来自 Java 现在我想在 Swift 中创建抽象类 我有这门课Java 我想做同样的事情Swift如果可能的话 abstract class Fetcher private Item items public