我正在迁移UIViewController
课程,以便对Swift进行一些培训。我通过桥接头成功使用了Objective-
C代码,但是我需要导入一个包含#define
指令的常量文件。
我在结合Swift和Cocoa和Objective-C(简单宏)中看到以下内容:
简单宏
通常
#define
在C和Objective-C中使用指令定义原始常量的地方,在Swift中使用全局常量代替。例如,常数定义#define FADE_ANIMATION_DURATION 0.35
可以在Swift中使用更好地表达let FADE_ANIMATION_DURATION = 0.35
。由于简单的类似于常量的宏直接映射到Swift全局变量,因此编译器会自动导入C和Objective-C源文件中定义的简单宏。
因此,似乎有可能。我已经将包含常量的文件导入到桥接头文件中,但是我的.swift
文件没有可见性,无法解决。
我应该怎么做才能使我的常量对Swift可见?
更新:
似乎可以使用NSString
常量,但不能使用布尔值:
#define kSTRING_CONSTANT @"a_string_constant" // resolved from swift
#define kBOOL_CONSTANT YES // unresolved from swift
目前,有些#define
已转换,有些未转换。进一步来说:
#define A 1
…成为:
var A: CInt { get }
要么:
#define B @"b"
…成为:
var B: String { get }
遗憾的是,YES
并NO
没有识别和转换由斯威夫特编译器的飞行。
我建议您将#define
s 转换为实际常数,#define
无论如何还是要好于s。
。H:
extern NSString* const kSTRING_CONSTANT;
extern const BOOL kBOOL_CONSTANT;
.m
NSString* const kSTRING_CONSTANT = @"a_string_constant";
const BOOL kBOOL_CONSTANT = YES;
然后Swift会看到:
var kSTRING_CONSTANT: NSString!
var kBOOL_CONSTANT: ObjCBool
另一种选择是将您的BOOL
定义更改为
#define kBOOL_CONSTANT 1
快点。但不如实际常数。
问题内容: 简单地说,我有一个存储应用程序常量的结构,如下所示: 例如,可以通过调用在Swift代码中使用这些常量。但是在我的代码中,它还包含一些Objective- C类。所以我的问题是如何在Objective-C代码中使用这些常量? 如果这种声明常量的方法不好,那么在Swift和Objective-C代码中使用全局常量的最佳方法是什么? 问题答案: 可悲的是,你不能暴露,也不是Objectiv
本文向大家介绍Swift使用Objective-C代码中的Swift类,包括了Swift使用Objective-C代码中的Swift类的使用技巧和注意事项,需要的朋友参考一下 示例 在同一模块中 在名为“ MyModule ”的模块内,Xcode生成一个名为的标头,该标头MyModule-Swift.h将公共Swift类公开给Objective-C。导入此标头以使用Swift类: 相关的构建设置:
问题内容: 有什么方法可以在我的Swift项目中使用swift使用用Objective-C编写的CocoaPod吗? 我只是制作桥接头吗?如果可以,我可以在Swift中访问CocoaPod中的库定义的对象,类和字段吗? 问题答案: 您问题的基本答案是,可以,您可以使用CocoaPods构建的Objective-C代码。 更重要的问题是“如何使用此类库?” 这个问题的答案取决于您中的标志: 假设您要
我正在尝试实现音频可视化器到AVAudioPlayer从许多天,尝试了不同的库,但没有成功。现在我发现了一个库displayer,但问题是它在Objective-C中,现在我不知道如何在swift代码中使用它。这里是图书馆https://github.com/agilie/displayers-audio-visualizers的链接。请在这方面指导我,或者在SWIFT中建议我一个好的可视化器。
问题内容: 我有一个带有值的枚举,它将用于告诉将消息记录到服务器的服务器类型的API方法。我正在使用Swift 1.2,因此可以将枚举映射到Objective-C 我得到错误 @objc枚举原始类型字符串不是整数类型 我没有设法找到任何地方说只有整数可以从Swift转换为Objective-C。是这样吗 如果是这样,是否有人对在Objective- C中提供类似的最佳实践建议? 问题答案: 从Xc
问题内容: 我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,我正在尝试在Objective- c类中进行访问。我的问题是,在Objective-C类中不可访问。这是我的速成班: 当我查看文件时,看不到: 当我尝试在我的Objective-c类中使用时,出现编译器错误。 有人知道这个问题吗?如何在Objective-c中访问Swift协议? 问题答案: 您需要