在Xcode 8中自动生成Swift-Header

时间:2016-06-17 09:40:35

标签: objective-c bridging-header swift3 xcode8 ios10

当我尝试使用Xcode 8 beta构建我的应用程序(使用内置工具将我的Swift 2.2转换为Swift 3之后),自动生成的Swift标头(TargetName-Swift.h)有一些错误。多行发生了3种不同的错误。

例如,在本节中:

SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) NSArray<NSDictionary<NSString *, NSString *> *> * _Nonnull CANewsFilterBlacklist;)
+ (NSArray<NSDictionary<NSString *, NSString *> *> * _Nonnull)CANewsFilterBlacklist;
+ (void)setCANewsFilterBlacklist:(NSArray<NSDictionary<NSString *, NSString *> *> * _Nonnull)newValue;

第1行:

TargetName-Swift.h:562:90: Too many arguments provided to function-like macro invocation

TargetName-Swift.h:562:1: Unknown type name 'SWIFT_CLASS_PROPERTY'

第2行:

TargetName-Swift.h:563:1: Expected identifier or '('

这是属于上述代码的Swift-Code:

public static var CANewsFilterBlacklist:[[String:String]] {
    get {
        if let data = iCloudStorageStatic.object(forKey: CAUserDefaultsNewsFilterBlacklistKey) as? [[String:String]] {
            return data
        } else {
            return [[String:String]]()
        }
    }
    set (newValue) {
        iCloudStorageStatic.set(newValue, forKey: CAUserDefaultsNewsFilterBlacklistKey)
    }
}

我不知道,我的Swift-Code有什么问题? Xcode在Swift代码中没有显示任何错误。它只会生成腐败的Swift-Header。

这是Xcode 8中的一个错误(在Xcode 7中,一切都按预期工作)?

2 个答案:

答案 0 :(得分:0)

正如rickster所说,这是Xcode中的一个错误,它在版本8.0 beta 2中得到了解决。 https://openradar.appspot.com/26786528

答案 1 :(得分:-1)

遇到了同样的问题,并注意到该方法使用的是Objective-C中不可用的对象,在您的情况下

  

[[字符串:字符串]]

是特定的,尝试使用NSDictionary 并且还不确定swift中的属性是否可以通过生成的头直接由编译器转换为Objective-C等效,

如果您没有从外部使用CANewsFilterBlacklist将其声明为私有也可能是一个修复,

希望苹果能够在以后适当修复