NS_STRING_ENUM不会生成枚举

时间:2016-11-06 01:41:34

标签: swift3 xcode8

自从Xcode 8发布以来,我们已经获得了NS_STRING_ENUM和NS_EXTENSIBLE_STRING_ENUM。正如Apple的文档中所述,使用NS_EXTENSIBLE_STRING_ENUM的Objective-c全局字符串被导入到Swift结构中,而NS_STRING_ENUM将它们作为枚举字符串导入。然而在实践中,这两个属性都变成了结构。

是否有一种巧妙的遗漏,或者这只是一个错误。

// traffic.h
typedef NSString * TrafficLightColor NS_STRING_ENUM;

static TrafficLightColor const TrafficLightColorRed = @"Red";
static TrafficLightColor const TrafficLightColorYellow = @"Yellow";
static TrafficLightColor const TrafficLightColorGreen = @"Green";

文档说它将被迅速导入为:

enum TrafficLightColor: String {
    case red
    case yellow
    case green
}

但事实并非如此。相反,它被移植到swift作为结构:

struct TrafficLightColor : RawRepresentable, _SwiftNewtypeWrapper, Equatable, Hashable, Comparable, _ObjectiveCBridgeable {
    static let red: TrafficLightColor
    static let yellow: TrafficLightColor
    static let green: TrafficLightColor
}

因此,简而言之,NS_EXTENSIBLE_STRING_ENUM的工作原理与Apple文档相同。然而,NS_STRING_ENUM没有。是否有一些我需要更改以使NS_STRING_ENUM在swift中生成枚举字符串?

0 个答案:

没有答案