iOS的部署目標:iOS的9.3, 基地SDK:最新的IOS(iOS的11.0), 的Xcode 9 Beta 4的, 夫特4夫特4 - 的Xcode 9的β4 - NSKernAttributeName VS NSAttributedStringKey
下面的代碼建立和運行在夫特3時,Xcode 8:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSKernAttributeName] as? CGFloat ?? 0
然而,夫特4遷移它轉換成這樣的:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSAttributedStringKey.kern] as? CGFloat ?? 0
Xcode的9現在抱怨:
Cannot subscript a value of type '[String : Any]' with an index of type 'NSAttributedStringKey'
據探長說,「NSAttributedStringKey
」僅在iOS的11提供(請記住,我中定位iOS 9)。
如果我將'NSAttributedStringKey.kern
'替換爲'NSKernAttributeName
',則錯誤仍然存在。
命令點擊'NSKernAttributeName
'告訴我它的可用性是iOS 6.但是,檢查員也聲稱它的類型是'NSAttributedStringKey
',它只在iOS 11中可用。我不知道這是否僅僅是一個API演示文稿的僞裝,或者一些東西,或者我錯過的東西。
問題:如何使用NSKernAttributeName
(或其現代化版本)與Swift 4的向後兼容性iOS 9?
謝謝你的幫助。
謝謝你。解釋非常感謝。 – Womble