Objective-C枚举在Swift中不可见

时间:2015-08-03 19:59:39

标签: objective-c xcode swift

我有一个枚举,就像在我的objective-c头文件中声明的那样:

typedef NS_ENUM(NSInteger, FontSize) {
    VerySmall = 12,
    Small = 14,
    Medium = 16,
    Big = 18
};

然后在我的桥接标题中导入此标题。

从我的swift代码中,当我尝试将'FontSize'声明为参数时,编译器会说'使用未声明的类型FontSize'。

从开发者指南中,这应该是可能的。有没有遇到同样问题的人?

3 个答案:

答案 0 :(得分:4)

从干净的 Swift 项目重新开始,添加一个.h文件(接受自动创建桥接标题)

Objective-C FontSize.h

typedef NS_ENUM(NSInteger, FontSize) {
    VerySmall = 12,
    Small = 14,
    Medium = 16,
    Big = 18
};

<强>桥接报头

#import "FontSize.h"

快速实施

import UIKit
class ViewController: UIViewController {
    let fontSize:FontSize = .VerySmall
}

建立,链接,运行&amp;在Xcode 6.4&amp; D测试7.0。

答案 1 :(得分:2)

我遇到了同样的问题并通过以下方式解决了这个问题:

  1. 将枚举声明移到@interface块之外
  2. 删除期间'。'来自Swift代码中的枚举引用
  3. var allRows = this.oTable.getRows(); for( r=0;r<allRows.length;r++) { var isExpanded = this.oTable.isExpanded(r); console.log("Row : "+r+" isExpanded:"+isExpanded); }

答案 2 :(得分:1)

即使上面有NS_ENUM答案,我仍然无法看到我的枚举。

事实证明,XCode 7.3发生了变化,其中NS_ENUM必须在@interface- @ end block之外定义。

Calling obj-c enum from swift not working after upgrading to Xcode 7.3 swift 2.2