相关疑难解决方法(0)

如何在swift中声明一个可以在目标c中使用的常量

如果我将swift常量声明为全局常量,如:

let a = "123"
Run Code Online (Sandbox Code Playgroud)

但是a目标c中找不到.

怎么解决这个?

objective-c swift

52
推荐指数
3
解决办法
3万
查看次数

如何将Objective-C extern常量迁移到Swift

我在.h类似于这样的文件中有一个Objective-C类:

@interface GlobalTags : NSObject
   extern const BOOL showMessages;
@end
Run Code Online (Sandbox Code Playgroud)

和一个.m类似这样的文件:

@implementation GlobalTags
   const BOOL showMessages = YES;
@end
Run Code Online (Sandbox Code Playgroud)

总之,我想要的是拥有几个全局变量而不需要实例化一个类,只需通过导入它们来访问它们.在Swift中执行此操作的最佳方法是什么?

谢谢

编辑:关于从Objective-C代码获取Swift全局变量,这是不可能的(参见这篇文章).

为了使这些全局变量在Objective-C代码中可见,我在Swift文件中这样做:

class GlobalTags: NSObject {
   static let showMessages: Bool = true;
}
Run Code Online (Sandbox Code Playgroud)

这是正确/最好的方法吗?

global-variables ios swift

11
推荐指数
1
解决办法
6300
查看次数

如何将Swift结构/枚举合并到Objective-C中?

场景:我已经通过.h桥将Objective-C文件暴露给Swift; 所以我可以从.Swift通过Storyboard启动Objective-C.

但是,我在ObjC需要的Environment.Swift文件中声明了一些全局枚举和结构:

enum BarButtonItem:Int {
    case cancel = 1
    case back
    case save
    case activate
    case upload
    case share
}
Run Code Online (Sandbox Code Playgroud)

在Swift中访问枚举:

  @IBAction func navButtonAction(sender: UIBarButtonItem) {
        if let buttonItem = BarButtonItem(rawValue: sender.tag) {
            switch buttonItem {
            case .save:
                println("{(3.3)AccessBoundaries} Save.")
            default:
                println("")
            }
        }
        self.dismissViewControllerAnimated(true, completion: nil)
    }
Run Code Online (Sandbox Code Playgroud)

我想在Objective-C文件中访问此(和其他数据类型):

- (IBAction)barButtonAction:(UIBarButtonItem *)sender {
    BarButtonItem....?
}
Run Code Online (Sandbox Code Playgroud)

Xcode无法识别这一点.

如何将.Swift文件中定义的环境数据类型(或者我可以?)暴露给Objective-C文件?
...并且,是否有可能在Objective-C中解释.Swift的结构? 在此输入图像描述

enums struct objective-c swift

3
推荐指数
1
解决办法
2543
查看次数

标签 统计

swift ×3

objective-c ×2

enums ×1

global-variables ×1

ios ×1

struct ×1