Swift3 NS_STRING_ENUM不';不产生枚举

Swift3 NS_STRING_ENUM不';不产生枚举,swift3,xcode8,Swift3,Xcode8,自从Xcode 8发布以来,我们已经获得了NS_字符串枚举和NS_可扩展字符串枚举。正如苹果公司文档中所描述的,带有NS_可扩展_字符串_ENUM属性的Objective-c全局字符串被导入Swift结构,而NS_字符串_ENUM将其作为ENUM字符串导入。然而在实践中,这两种属性都会成为障碍 是否有一个微妙的,我错过了或这只是一个错误 // traffic.h typedef NSString * TrafficLightColor NS_STRING_ENUM; static Traffi

自从Xcode 8发布以来,我们已经获得了NS_字符串枚举和NS_可扩展字符串枚举。正如苹果公司文档中所描述的,带有NS_可扩展_字符串_ENUM属性的Objective-c全局字符串被导入Swift结构,而NS_字符串_ENUM将其作为ENUM字符串导入。然而在实践中,这两种属性都会成为障碍

是否有一个微妙的,我错过了或这只是一个错误

// traffic.h
typedef NSString * TrafficLightColor NS_STRING_ENUM;

static TrafficLightColor const TrafficLightColorRed = @"Red";
static TrafficLightColor const TrafficLightColorYellow = @"Yellow";
static TrafficLightColor const TrafficLightColorGreen = @"Green";
文件称,它将作为以下内容导入swift:

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_可扩展_字符串_ENUM的工作原理与Apple文档中描述的一样。然而,NS_STRING_ENUM却没有。我是否需要更改某些内容,以使NS_STRING_ENUM在swift中生成ENUM字符串?

您的观察结果很好。但是既然教科书上的例子本身不起作用,除了教科书上的例子显然是错误的以外,什么样的答案会让你满意呢?同样明显的是,你已经知道了。至于它是否是一个bug,这显然也不可能说:Swift是错误地导入了这个东西,还是文档的作者弄错了?(顺便说一句,我相信这确实像曾经宣传的那样有效。)我提交了一份bug报告。29128685 . 我想如果有足够多的人对此抱怨,苹果公司会解决的。至于文档作者的错误,我认为3个来源的错误意味着作者错误了3次(或更多)。这三个来源是:1)Swift Evolution(SE-0033)2)Xcode Quick Help 3)Apple文档这就是为什么我提到这似乎在某种程度上起了作用。我使用的是Xcode 8.1,您可能也在使用,但您可以尝试推出一个更旧的版本。Xcode 8,或者如果你有一个测试版的话。顺便说一句,你的bug报告编号听起来像是你在
bugreport.apple.com
上提交的。我建议改用
bugs.swift.org