iOS Deployment Target: iOS 9.3, Base-SDK: Die neueste iOS (iOS 11.0), Xcode 9 Beta 4, Swift 4Swift 4 - Xcode 9 Beta 4 - NSKernAttributeName vs NSAttributedStringKey
Der folgende Code erstellt und Läufe in Swift 3, Xcode 8:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSKernAttributeName] as? CGFloat ?? 0
jedoch der Migrator Swift 4 wandelt es dazu:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSAttributedStringKey.kern] as? CGFloat ?? 0
Xcode 9 jetzt klagt:
Cannot subscript a value of type '[String : Any]' with an index of type 'NSAttributedStringKey'
Inspektor Laut 'NSAttributedStringKey
' ist nur in iOS 11. verfügbar (Beachten Sie, dass ich iOS 9 bin Targeting).
Wenn ich "NSAttributedStringKey.kern
" durch "NSKernAttributeName
" ersetze, bleibt der Fehler bestehen.
Command-Klick auf 'NSKernAttributeName
' sagt mir, dass seine Verfügbarkeit iOS 6 ist. Der Inspektor behauptet aber, sein Typ ist '', die nur in iOS 11 verfügbar ist. Ich weiß nicht, ob dies nur ein ist Artefakt der API-Präsentation, oder ein suff-up, oder etwas, das ich vermisse.
Frage: Wie kann ich NSKernAttributeName
(oder seine modernisierte Version) mit Abwärtskompatibilität zu iOS 9, mit Swift 4?
Vielen Dank für jede Hilfe.
Vielen Dank dafür. Und die Erklärung wurde sehr geschätzt. – Womble