是否可以在 Objective-C 中调用 Swift 便利初始化器

2024-05-26

假设我在 Swift 中有一个方便的初始化器:

extension UIImage {
    convenience init?(bundleNamed name: String) {
        let bundle = NSBundle(forClass: Foo.self)
        self.init(named: name, inBundle: bundle, compatibleWithTraitCollection: nil)
    }
}

在 Objective-C 中我该如何称呼它?以下不起作用:

[UIImage bundleNamed:@"Bar"];
[[UIImage alloc] initWithBundleNamed:@"Bar"];

我是否需要专门针对 Objective-C 的额外类扩展?


Solution:根据下面 Lasse 的回答,我必须执行的步骤是:

在 Objective-C 类实现文件中,添加

#import <ModuleName-Swift.h>

然后我必须删除派生数据并重建。然后我就可以使用方便的初始化程序,如下所示:

[[UIImage alloc] initWithBundleNamed: @"Bar"];

我不需要将初始化程序声明为public因为默认级别为internal对于我的模块来说已经足够了。


查看将 Swift 与 Cocoa 和 Objective-C 结合使用 (Swift 2.2) - 混合搭配 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122。归根结底似乎是

  1. 制作方便的初始化程序public, and
  2. 导入 XCode 生成的头文件[YourProductModuleName]-Swift.h到你的代码中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 Objective-C 中调用 Swift 便利初始化器 的相关文章

  • 在没有预览窗口的情况下使用 AVCaptureVideoDataOutputSampleBufferDelegate

    我正在开发一个基于 Swift 的 macOS 应用程序 我需要捕获视频输入 但不将其显示在屏幕上 而不是显示视频 我想将缓冲的数据发送到其他地方进行处理 并最终显示它在 a 中的一个物体上SceneKit scene 我有一个Camera
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 如何使用AudioKit保存音频文件?

    我有音频文件 我给它做了一些效果 let pitchshifter AKPitchShifter self audioPlayer pitchshifter shift 10 AudioKit output pitchshifter 如果我
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 作为!与 Swift 中 Xcode 6.3 中的 as 运算符对比

    Xcode 6 3 使 Swift 发生了很大变化 我必须更换每个应用程序中的数十个位置as gt as 为什么 现在有什么规则 在 Swift 1 2 之前 as运算符可用于执行两种不同类型的转换 具体取决于要转换的表达式的类型及其要转换
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • Apple Mach-O 链接器错误(静态,不是 ld)

    我最近遇到了 Apple Mach O 链接器错误 大多数指南建议将 构建设置 中的位码更改为 否 但它仅适用于 ld 错误 这与我的不同 我会提供截图 请帮忙修复bug pod HandySwift 导致了错误的出现 这是它的 Githu
  • Mac OS X 上的 .dll 等效项 [重复]

    这个问题在这里已经有答案了 我来自一个Windows背景 我习惯于通过创建 dll 然后分发所有库和文档 因此 如果用户想要使用它 他会添加对库的引用并使用它 但是 在 Mac 中 我正在开发 SDK 并且我想要一种方法creating a
  • 将 UIToolBar 添加到所有键盘(swift)

    我正在尝试以尽可能少的重复次数将自定义 UIToolBar 添加到我的所有键盘中 我目前的做法要求我将代码添加到所有 viewDidLoads 中 并将每个文本字段的委托分配给我正在使用的 viewController 我尝试创建自己的 U
  • 无法在 ios 应用程序中通过 googlecast 正确投射视频

    我正在开发一个基于 AVPlayer 的自定义视频播放器项目 尝试整合谷歌演员 我已经根据谷歌图进行了集成 https codelabs developers google com codelabs cast videos ios http
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • ABAddressBookCopyArrayOfAllPeople 中缺少联系人

    我试图从我的应用程序中的地址簿中查找电话号码 但很惊讶没有找到它 问题是 我已经在我的应用程序访问的控制台中打印了地址簿的所有号码 奇怪的是 有些联系人丢失了 我正在将输出与我的地址簿进行比较 虽然数量很少 但仍然如此 这就是我访问地址簿的
  • $0 和 $1 在 Swift 闭包中意味着什么?

    let sortedNumbers numbers sort 0 gt 1 print sortedNumbers 谁能解释一下什么 0 and 1在斯威夫特中意味着什么 另一个样本 array forEach actions append
  • Swift:长按手势识别器 - 检测轻击和长按

    我想连接一个动作 如果手势是点击 它会以特定的方式为对象设置动画 但如果按下持续时间超过 0 5 秒 它会执行其他操作 现在 我刚刚连接了动画 我不知道如何区分长按和点击 如何访问新闻持续时间以实现上述目的 IBAction func ta
  • NSPredicate IN 从数组元素查询

    对于一个古怪的标题表示歉意 我有一个 Int 数组 我想定义一个 NSPredicate 来过滤掉 connectionType 等于数组中包含的值的项目 所以基本上是这样的 fetchRequest predicate NSPredica
  • 通过 Button Swift 中的标签发送行和部分

    我里面有这个cellForRowAtIndexPath cell plusBut tag indexPath row cell plusBut addTarget self action plusHit forControlEvents U
  • 如何在 Swift 2.0 中使用 stringByAddingPercentEncodingWithAllowedCharacters() 作为 URL

    我在 Swift 1 2 中使用过这个 let urlwithPercentEscapes myurlstring stringByAddingPercentEscapesUsingEncoding NSUTF8StringEncoding
  • 在 Object 子类及其自己的子类上实现ignoreProperties()

    我是领域新手 我正在使用继承自 Object 的基类以及该基类的自定义子类创建模型 我的模型要求基类通过覆盖静态来声明一些属性被忽略ignoredProperties 方法 当尝试在某些基类子类上重写该方法时 我收到一个 Swift 编译器

随机推荐

  • 使用动态变量解析 JSON 块

    我从 URL 中获取 JSON 对象并使用 JSON NET 解析它 我能够很好地解析具有定义变量的数据块 但是当涉及到 var value 的随机集合时 我陷入困境 示例 松散类型 FNAME joe LNAME doe BodyType
  • 来自 jsp:include 的 JSF 1.2 自定义组件

    在开始回答我的问题之前 我先说一下我的不幸的局限性 我使用的是 JSF 1 2 而不是 2 所以没有复合组件 我使用 JSP 代替 Facelets 进行渲染 所以这些复合组件也没有 我不允许使用任何第三方标签库 richFaces ice
  • 如何在 PL/SQL 中查找字符串中不同字符的数量和名称[重复]

    这个问题在这里已经有答案了 我对 PL SQL 很陌生 我需要获取字符串中不同字符的名称和计数 例如 如果我有一个字符串str helloexample 我需要获得不同字符的输出str i e heloxamp 我怎样才能做到这一点 您可以
  • 列表字典的最大/最小值

    我有一个字典将 id 映射到数据值列表 如下所示 dic id v1 v2 v3 v4 我试图迭代字典中的每个值并检索列表映射的某个索引的最大 最小值 我想做的是这样的 maximum max data 0 for id data in s
  • 替代(免费)AOP PostSharp 用于方法跟踪(和异常)

    我喜欢添加跟踪类中每个方法的进入和离开 并在发生异常时跟踪参数 使用 PostSharp AOP 我不需要将其放入每个方法中 而只需应用属性即可 但我买不起 PostSharp 有其他方法可以做到这一点吗 Unity3D可以做到吗 我正在使
  • Parse.com 的现实数据备份方法

    我们正在使用 Parse com 构建一个 iOS 应用程序 但仍然找不到有效备份数据的正确方法 作为前提 我们已经并且将会有很多数据存储行 假设我们有一个包含 100 万行的类 假设我们已对其进行备份 然后希望在发生危险情况 例如生产中的
  • 为什么要以静态的方式访问静态字段呢?

    public enum MyUnits MILLSECONDS 1 milliseconds SECONDS 2 seconds MINUTES 3 minutes HOURS 4 hours private MyUnits int qua
  • NHibernate代理异常

    我是新 NHibernate 我正在编写一个简单的应用程序 其中的客户类包含 id 和名称 并使用 nhibernate 将对象存储到数据库中 但我得到以下信息 未配置 ProxyFactoryFactory 使用可用的 NHibernat
  • 配置文件上的 Spring 自动配置顺序/优先级

    我刚刚阅读了一些 Spring 文档 并且对自动配置的工作方式有疑问 因此 如果我们运行具有特定配置文件的 Java 应用程序 它将自动使用以下格式命名的配置文件 application profileName properties 假设我
  • 如何创建开发/调试和生产设置

    我最近无意中部署了我们的游戏typrX的调试版本 打字比赛在www typrx com http www typrx com 尝试一下 很有趣 它很快就被纠正了 但我知道它可能会再次发生 挖完后 在 Google 上 我找到了一些如何创建
  • vb.net if 简写

    有没有办法使用速记来做这样的事情 If Not txtBookTitle Text String Empty Then objBook DisplayName txtBookTitle Text End If objBook Display
  • 以编程方式检索 OSX 网络/代理配置值

    考虑到我的应用程序具有当前登录的管理员用户的用户 ID 和密码 是否可以从 OSX 网络设置中检索配置值 对 高级 代理 选项卡内容特别感兴趣 通过设置 API 完成 以下是从 OSX 网络设置中获取 PAC URL 字符串的示例 stat
  • 用 Ajax 响应替换 div 的内部 HTML

    我试图在一段时间后更改 div 的内部 HTML 我得到了我想要的 Ajax 正确响应 但无法用 Ajax 响应替换所选内容的内部 HTML 我的代码有什么问题 Html p class time ui li desc 51 seconds
  • 如何只获取 getdate() 的日期部分? [复制]

    这个问题在这里已经有答案了 我有一个包含 CreationDate 字段的 SQL 表 I have getdate 在计算列规格公式中 我想知道如何获取日期部分 即 2012 08 24 而不是 2012 08 24 10 45 17 7
  • GMAIL:如果我知道其 ID,如何在新窗口中打开现有电子邮件?

    简而言之 如果我知道新窗口中的电子邮件 ID 如何在 Gmail 中打开电子邮件 问候 我从 GMAIL API 获取所需电子邮件的 ID 我希望它在单独的窗口中打开 例如 通过单击我的附加组件 我知道的 使用 JavaScript 代码做
  • C++/CLI 中的 ref 和 out

    我知道 C CLI 代码 void foo Bar x 转变为 Void foo ref Bar x 变成的 C CLI 代码是什么 Void foo out Bar x 您可以使用 OutAttribute using namespace
  • 如何禁用 Yii2 中的按钮

    我正在尝试禁用创建项目 Button当用户未登录时 该按钮将Hide or disable 这是我的条件 p p 它正在工作 但是 当用户登
  • 是否有一个“轻型版本”IntelliJ IDEA 可以在没有项目的情况下编辑文件?

    可以从命令行在单个文件上调用 IntelliJ IDEA 如此处所述 将 IntelliJ IDEA 作为 Diff 或合并命令行工具运行 https www jetbrains com help idea running intellij
  • 使用 JavaScript 更改 CSS 类时转义正斜杠 (“/”)

    我需要使用 JavaScript 根据某些条件添加一些 CSS 类 但如果我的字符串包含正斜杠 这就是我的用例 div class disabled div 我什至尝试
  • 是否可以在 Objective-C 中调用 Swift 便利初始化器

    假设我在 Swift 中有一个方便的初始化器 extension UIImage convenience init bundleNamed name String let bundle NSBundle forClass Foo self