2017-07-04 4 views
2

Ich habe gerade angefangen Xcode9 (beta2) zu verwenden. Mein Verständnis war, dass es mich nicht zwingen würde, meinen Code sofort zu ändern. Aber ich bin immer ein Build-Fehler mit einer Bibliothek kommen ich verwende (Gloss):Ist Xcode9 abwärtskompatibel zu Swift 3 (oder 3.1)?

1) Für den folgenden Code:

public func valueForKeyPath(keyPath: String, withDelimiter delimiter: String = GlossKeyPathDelimiter, logger: Logger = GlossLogger()) -> Any? { 

ich:

Initializer 'init()' interne und kann nicht von einem Standardargument Wert

2) Zu diesem Code verwiesen werden:

internal func flatMap<KeyPrime : Hashable, ValuePrime>(_ transform: (Key, Value) throws -> (KeyPrime, ValuePrime)?) rethrows -> [KeyPrime : ValuePrime] { 
    return Dictionary<KeyPrime,ValuePrime>(elements: try flatMap({ (key, value) in 
     return try transform(key, value) 
    })) 
} 

Ich erhalte:

Closure Tupel Parameter '(Schlüssel: _, Wert: _)' nicht unterstützt Destrukturierung

Beides verursacht kein Problem mit Xcode 8.3/Schnell 3.1.

ich Xcode9 verwende, ohne die Option 4. Swift aktualisieren gewählt zu haben scheint es mehrere Möglichkeiten:

  1. Es gibt einige Flags, die gesetzt werden müssen, um Swift 3.1 Rückwärtskompatibilität
  2. Xcode9 zu halten ist in der Betaphase und ist einfach nicht bereit voll
  3. Xcode9 nicht vollständig rückwärtskompatibel zu Swift 3,1

Gedanken sein?

+1

Vergleichen https://stackoverflow.com/q/44389591/2976878 – Hamish

Antwort

1

Xcode 9 Quer kompatibel mit Swift 3 und 4. Jedoch Sie auf Swift 3.2 sein müssen, die das Minimum für Xcode ist 9.

+0

Also, 'Xcode9 wird nicht vollständig rückwärtskompatibel zu Swift 3.1 sein 'scheint der Fall zu sein. Seit AFAIK kam Swift 3.2 mit Xcode 9 heraus. –