"frameworkname"-Swift.h中的通用类导致Xcode 6.3中的"类型名称需要说明符或限定符"错误

Dán*_*agy 5 generics objective-c swift xcode6.3

我更新到Xcode 6.3,我的工作区中有两个独立的项目(一个是框架).现在,Xcode自动生成了这个"frameworkname"-Swift.h头文件,但是当我将泛型类作为属性时,它会生成以下行:

@class Presentation;
SWIFT_CLASS("_TtC13BusinessLogic31MeetupDetailViewControllerModel")
@interface MeetupDetailViewControllerModel : NSObject
@property (nonatomic) /* RsvpStore<Rsvp> */ anRsvpStore;
@end
Run Code Online (Sandbox Code Playgroud)

Objective-c中没有gerenics,所以我该如何解决这个问题呢?

我发现如果我将类型设置为NSObject,我可以解决问题:

@property (nonatomic) NSObject * __nonnull anRsvpStore;
Run Code Online (Sandbox Code Playgroud)

但是对于每个构建,此文件都会重新创建为相同的错误版本.那么我如何强制这个构建来将这个泛型的类型设置为NSObject?

Dán*_*agy 5

我可以停在设置创建这个兼容性头Build Settings- > Swift Compiler - Code Generation- > Intall Objective-C Compatibility Header到No.

由于我没有在我的项目中编写Objective-C代码,因此该选项没有问题,但这是一种解决方法,而不是兼容性头中的泛型解决方案.

另一种解决方法是,如果使用标记属性private,则它们不会出现在兼容性标头中.

Swift 2.0更新

引入了一个新的@nonobjc属性来有选择地抑制实例成员的ObjC导出,否则这些成员将成为@objc.(16763754)Blockquote

未经测试,但这看起来像一个解决方案.