XCode 7.3 打破了 Bridging-Header.h?
XCode 7.3 broke Bridging-Header.h?
我刚刚升级到 XCode 7.3,它似乎损坏了我的 PROJECT_NAME-Bridging-Header.h
我收到此错误:
BBCategoryType 是在名为 BBCategory.h 的文件中定义的枚举,该文件在我的 PROJECT_NAME-Bridging-Header.h:
中导入
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "BBCategory.h"
我还注意到,如果我删除 PROJECT_NAME-Bridging-Header.h,我会收到同样的错误 - 如果我将它添加回项目,我会收到同样的错误 - 就好像 XCode 7.3 甚至不再识别 PROJECT_NAME-Bridging-Header.h。我已验证在我的构建设置中也正确引用了桥接 header。我已按照此处的所有说明进行操作以确保其设置正确:
How to call Objective-C code from Swift
这是 BBCategory.h 的内容,它在升级到 XCode 7.3 之前没有改变并且完全正常工作,这肯定是问题开始的时候:
#import "PCFCategory.h"
/**
* Category class that is a subclass of PCFCategory.
*/
@interface BBCategory : PCFCategory
/**
* Enum that describes the type of Category, used in BBSubMenuViewController and PCFCategoryMap+BBAdditions.
*/
typedef NS_ENUM(NSUInteger, BBCategoryType) {
/// BBCategoryTypeFeatured for Featured Category.
BBCategoryTypeFeatured,
/// BBCategoryTypeNormal for Normal Category.
BBCategoryTypeNormal,
/// BBCategoryTypeHome for Home Category.
BBCategoryTypeHome,
/// BBCategoryTypeError if the category type is unknown
BBCategoryTypeError
};
这可能是 XCode 7.3 的一些错误,还是我需要做一些更改才能正常工作?
我还注意到桥接 header 在下面以红色显示:
这让我觉得 XCode 7.3 无法识别桥接 header。 XCode 7.1、7.2 一切正常 - 7.3 这个坏了
问题是你的枚举定义在里面你的@interface
尽管这在 Objective-C 中有效,但它似乎对 Swift 隐藏了它(我不确定这是否有意为之 - 肯定想知道是否有其他人知道更多关于这个)。
因此,您可以通过将枚举移到@interface 之外来修复它。
#import "PCFCategory.h"
/**
* Enum that describes the type of Category, used in BBSubMenuViewController and PCFCategoryMap+BBAdditions.
*/
typedef NS_ENUM(NSUInteger, BBCategoryType) {
/// BBCategoryTypeFeatured for Featured Category.
BBCategoryTypeFeatured,
/// BBCategoryTypeNormal for Normal Category.
BBCategoryTypeNormal,
/// BBCategoryTypeHome for Home Category.
BBCategoryTypeHome,
/// BBCategoryTypeError if the category type is unknown
BBCategoryTypeError
};
/**
* Category class that is a subclass of PCFCategory.
*/
@interface BBCategory : PCFCategory
...
我刚刚升级到 XCode 7.3,它似乎损坏了我的 PROJECT_NAME-Bridging-Header.h
我收到此错误:
BBCategoryType 是在名为 BBCategory.h 的文件中定义的枚举,该文件在我的 PROJECT_NAME-Bridging-Header.h:
中导入//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "BBCategory.h"
我还注意到,如果我删除 PROJECT_NAME-Bridging-Header.h,我会收到同样的错误 - 如果我将它添加回项目,我会收到同样的错误 - 就好像 XCode 7.3 甚至不再识别 PROJECT_NAME-Bridging-Header.h。我已验证在我的构建设置中也正确引用了桥接 header。我已按照此处的所有说明进行操作以确保其设置正确:
How to call Objective-C code from Swift
这是 BBCategory.h 的内容,它在升级到 XCode 7.3 之前没有改变并且完全正常工作,这肯定是问题开始的时候:
#import "PCFCategory.h"
/**
* Category class that is a subclass of PCFCategory.
*/
@interface BBCategory : PCFCategory
/**
* Enum that describes the type of Category, used in BBSubMenuViewController and PCFCategoryMap+BBAdditions.
*/
typedef NS_ENUM(NSUInteger, BBCategoryType) {
/// BBCategoryTypeFeatured for Featured Category.
BBCategoryTypeFeatured,
/// BBCategoryTypeNormal for Normal Category.
BBCategoryTypeNormal,
/// BBCategoryTypeHome for Home Category.
BBCategoryTypeHome,
/// BBCategoryTypeError if the category type is unknown
BBCategoryTypeError
};
这可能是 XCode 7.3 的一些错误,还是我需要做一些更改才能正常工作?
我还注意到桥接 header 在下面以红色显示:
这让我觉得 XCode 7.3 无法识别桥接 header。 XCode 7.1、7.2 一切正常 - 7.3 这个坏了
问题是你的枚举定义在里面你的@interface
尽管这在 Objective-C 中有效,但它似乎对 Swift 隐藏了它(我不确定这是否有意为之 - 肯定想知道是否有其他人知道更多关于这个)。
因此,您可以通过将枚举移到@interface 之外来修复它。
#import "PCFCategory.h"
/**
* Enum that describes the type of Category, used in BBSubMenuViewController and PCFCategoryMap+BBAdditions.
*/
typedef NS_ENUM(NSUInteger, BBCategoryType) {
/// BBCategoryTypeFeatured for Featured Category.
BBCategoryTypeFeatured,
/// BBCategoryTypeNormal for Normal Category.
BBCategoryTypeNormal,
/// BBCategoryTypeHome for Home Category.
BBCategoryTypeHome,
/// BBCategoryTypeError if the category type is unknown
BBCategoryTypeError
};
/**
* Category class that is a subclass of PCFCategory.
*/
@interface BBCategory : PCFCategory
...