当我尝试使用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中,一切都按预期工作)?
答案 0 :(得分:0)
正如rickster所说,这是Xcode中的一个错误,它在版本8.0 beta 2中得到了解决。 https://openradar.appspot.com/26786528
答案 1 :(得分:-1)
遇到了同样的问题,并注意到该方法使用的是Objective-C中不可用的对象,在您的情况下
[[字符串:字符串]]
是特定的,尝试使用NSDictionary 并且还不确定swift中的属性是否可以通过生成的头直接由编译器转换为Objective-C等效,
如果您没有从外部使用CANewsFilterBlacklist将其声明为私有也可能是一个修复,
希望苹果能够在以后适当修复