2016-06-17 15 views
3

Wenn ich versuche, meine App mit Xcode 8 beta zu bauen (nachdem ich meinen Swift 2.2 mit dem integrierten Tool in Swift 3 konvertiert habe), hat der automatisch generierte Swift Header (TargetName-Swift.h) einige Fehler. Bei mehreren Zeilen treten 3 verschiedene Fehler auf.Automatisch generierte Swift-Header in Xcode 8

Zum Beispiel in diesem Abschnitt:

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; 

Zeile 1:

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

und

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

Zeile 2:

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

Dies ist der Swift-Code, der oben auf den Code gehört:

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) 
    } 
} 

Ich habe keine Ahnung, was mit meinem Swift-Code ist fehlerhaft? Xcode zeigt im Swift-Code keine Fehler an. Es erzeugt nur den korrupten Swift-Header.

Ist das ein Fehler in Xcode 8 (in Xcode 7 funktionierte alles wie erwartet)?

+1

Sieht aus wie ein Fehler in Xcode 8 Beta. [Bitte melden Sie es.] (Http://bugreport.apple.com) – rickster

Antwort

-1

war das gleiche Problem haben und festgestellt, dass das Verfahren in Objective-C-Objekte nicht verfügbar wurde mit, in Ihrem Fall

[[String: String]]

swift spezifisch ist, Versuchen Sie stattdessen NSDictionary zu verwenden und auch nicht sicher, ob die Eigenschaften in swift in Objective-C direkt durch den Compiler über den generierten Header

konvertiert werden können, wenn Sie nicht CANewsFilterBlac verwenden klist von außen als privat zu erklären sein könnte auch eine Lösung,

hoffentlich Apfel mit dem richtigen Fix wird später kommen

Verwandte Themen