当前位置: 首页 > 面试题库 >

使用Swift处理Objective-C块

谷梁卓
2023-03-14
问题内容

我在新的Swift项目中使用Objective-C Firebase框架时遇到麻烦。我主要来自C#背景,因此Swift闭合语法尚不清楚。

这是在f为Firebase对象的情况下在Objective-C中代码的工作方式

[f observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
  NSLog(@"%@ -> %@", snapshot.name, snapshot.value);
}];

XCode auto建议使用这种语法,而我还没有找到可行的解决方案。

f.observeEventType(FEventTypeValue, withBlock: ((FDataSnapshot!) -> Void)?)

我想像Objective-C示例一样将FDataSnapshot数据分配给一个变量。谢谢


问题答案:

这是Swift的等效项:

f.observeEventType(FEventTypeValue, withBlock: {
    snapshot in
    println("\(snapshot.name) -> \(snapshot.value)")
})

这里的关键是in关键字,用于将变量的闭包分配给变量



 类似资料:
  • 主要内容:NSError在Objective-C编程中,错误处理由框架中提供的类提供处理。 与仅使用错误代码或错误字符串相比,对象封装了更丰富且更具可扩展性的错误信息。 对象的核心属性是错误域(由字符串表示),特定于域的错误代码和包含应用程序特定信息的用户信息字典。 NSError Objective-C程序使用对象来传达有关用户需要了解的运行时错误的信息。 在大多数情况下,程序会在对话框或工作表中显示此错误信息。 但它

  • 为了打印日志,可使用Objective-C编程语言中的方法,首先在示例中使用了这个方法。 下面来看一下打印“Hello World”字样的简单代码 - 现在,当编译并运行程序时,将得到以下结果 - 在实时应用程序中禁用日志 由于在应用程序中经常使用,它将日志信息打印在设备的日志中,并且在实时构建中打印日志是不好的。 因此,使用类型定义来打印日志,如下所示。 执行上面示例代码,得到以下结果: 现在,

  • 主要内容:1. 预处理器示例,2. 预定义的宏,3. 预处理器运算符,4. 参数化宏Objective-C预处理器不是编译器的一部分,而是编译过程中的一个单独步骤。 简单来说,Objective-C预处理器只是一个文本替换工具,它指示编译器在实际编译之前进行必要的预处理。 我们将Objective-C预处理器称为OCPP。 所有预处理器命令都以井号()开头。它必须是第一个字符(前面不能有空格),并且为了便于阅读,预处理器指令应该从第一列开始。 以下部分列出了所有重要的预处理程序指

  • 本文向大家介绍Swift使用Objective-C代码中的Swift类,包括了Swift使用Objective-C代码中的Swift类的使用技巧和注意事项,需要的朋友参考一下 示例 在同一模块中 在名为“ MyModule ”的模块内,Xcode生成一个名为的标头,该标头MyModule-Swift.h将公共Swift类公开给Objective-C。导入此标头以使用Swift类: 相关的构建设置:

  • 问题内容: 我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,我正在尝试在Objective- c类中进行访问。我的问题是,在Objective-C类中不可访问。这是我的速成班: 当我查看文件时,看不到: 当我尝试在我的Objective-c类中使用时,出现编译器错误。 有人知道这个问题吗?如何在Objective-c中访问Swift协议? 问题答案: 您需要

  • 本文向大家介绍在Swift中使用Objective-C编写类、继承Objective-C类,包括了在Swift中使用Objective-C编写类、继承Objective-C类的使用技巧和注意事项,需要的朋友参考一下 互用性(互操作性)使开发者可以定义融合了 Objective-C 语言特性的Swift类。编写 Swift 类时,不仅可以继承 Objective-C 语言编写的父类,采用 Objec